2014-12-09 5 views
0

좋아, 지금 나는 내 대학 교과 데이터베이스를 디자인하고있다. 나는 쿼리 내에서 계산 된 필드를 고민하고있다. 계산 된 필드는 식 작성 도구를 통해 IIF 식으로 구성됩니다. 주요한 문제는 계산 된 필드가 작동한다는 것입니다. 그러나 IIF의 허위 부분에 "Not Applicable"을 넣었으므로 여전히 #Error로 나타납니다. 아래는 제 IIF입니다!계산 된 필드 (IIF)

IIf([Quantity]=20,[Total After Discount]*0.95, 
    IIf([Quantity]=50,[Total After Discount]*0.925, 
     IIf([Quantity]=100,[Total After Discount]*0.9, 
      IIf([Quantity]>=200,[Total After Discount]*0.875,"Not Applicable.")))) 

도움이나 아이디어 또는 제안 사항을 알려주십시오.

답변

0

이 쿼리는 총 AFTER 할인을 계산합니다. 따라서 입력 값은 BEFORE 할인 전이어야합니다. 당신은 아마 이런 식으로 뭔가를하고있다 :

SELECT IIf([Quantity]=20,[Total After Discount]*0.95,...) AS [Total After Discount] 
FROM ... 

을 그래서 수 없습니다 [Total After Discount] 자체를 언급하고이 표현에. 당신은 테이블이나 쿼리 이름으로 열 이름을 정규화하여 그것을 할 수 있습니다, 다른 쿼리 또는 테이블의 열입니다

SELECT IIf([Quantity]=20,[Total Before Discount]*0.95,...) AS [Total After Discount] 
FROM ... 

[Total After Discount] 경우로 변경하고 다시 결과에서 같은 열 이름을 사용하려면 :

SELECT 
    IIf([Quantity]=20, MyTable.[Total After Discount]*0.95, ...) 
     AS [Total After Discount] 
FROM MyTable 

이렇게하면 재귀가 허용되지 않습니다.


하지만 논리가 실제로 맞습니까? 다음과 같아야합니다 :

IIf([Quantity]>=200,[Total Before Discount]*0.875, 
    IIf([Quantity]>=100,[Total Before Discount]*0.9, 
     IIf([Quantity]>=50,[Total Before Discount]*0.925, 
      IIf([Quantity]>=20,[Total Before Discount]*0.95,[Total Before Discount])))) 

로직을 돌리십시오. 할인을 표시하지는 않지만 할인 후 합계를 표시하므로 "적용 할 수 없음"대신 합계를 표시해야합니다.

당신이 다음 예 "해당 사항 없음"을 표시 할인을 보여주는 한 경우 :

IIf([Quantity]>=200,"12.5%", 
    IIf([Quantity]>=100,"10%", 
     IIf([Quantity]>=50,"7.5%", 
      IIf([Quantity]>=20,"5%","Not Applicable")))) As DiscountPercent 
+0

아! 그래, 방금 할인을 보여주는 마지막 표현을 사용 했어. HOWEVER, 어떻게 번식합니까? "적용 할 수없는"필드는 실제로 여러 개가 될 수 없으므로 – SRATNA

+0

BTW, 회사는 할인 된 가격으로 발행인에게서 책을 사러 간다. HOWEVER 주문 크기와 관련하여 상단에 할인을 추가하라는 요청을 받았습니다. 내 데이터베이스에 대한 이해에 도움이 된 희망 – SRATNA

+0

좋아, 논리를 사용하고 두 개의 필드를 추가 했으므로 한 개는 할인을 표시하고 한 개는 모든 할인 후에 총을 표시합니다. 내 친구, 전설입니다! – SRATNA

0

난 당신이 계산 된 필드에 숫자/텍스트 답변을 혼합 할 수 있다고 생각하지 않습니다. 이 경우에는 계산 된 필드가 아니라 쿼리를 사용하는 것이 좋습니다. 지금까지 계산 된 필드를 사용하여 이러한 제한 사항을 피할 수있었습니다.

+0

안녕하세요, 그렇습니다. 그러나 쿼리를 사용하고 있습니다. 주문 크기와 관련하여 할인을해야합니다 ... 예를 들어 주문이 20 인 경우 5 % 할인 등이 필요합니다. 그래서 가장 좋은 방법은 무엇입니까? 이것을하기 위해? – SRATNA