문제

기본적으로 내가 필요한 것은 두 필드의 곱셈의 합을 얻는 것입니다.

예를 들어: SUM ((field_1 or field_2) * field_3)

하지만 field_1 또는 field_2 네 번째 필드의 값에 따라 선택됩니다. field_4

내 테이블 :

field_1: Float
field_2: Float
field_3: Float
field_4: Char

요컨대, 내가 필요한 것은 다음과 같습니다.

SELECT
...
IF field_4 = 'K'
THEN
    SUM( field_1 * field_3 )
ELSE
    SUM( field_2 * field_3 )

IF와 CASE 진술을 시도했지만 작동하게 할 수는 없습니다. 여기 내 진짜 쿼리 :

SELECT  
    D.id,
    D.name,
    SUM(CASE WHEN D.sale_unity = 'K' 
        THEN (D.cost_price * CI.quantity_k)
        ELSE (D.cost_price * CI.quantity_u) ) AS total_cost,
    SUM(CASE WHEN D.sale_unity = 'K' 
        THEN (D.sale_price * CI.quantity_k)
        ELSE (D.sale_price * CI.quantity_u) ) AS net
FROM DETAIL D
INNER JOIN VOUCHER AS V ON V.id = D.voucher_id
WHERE V.client_id = 97 AND V.date BETWEEN '06/01/2012' AND '07/01/2012'
GROUP BY D.id, D.name 
도움이 되었습니까?

해결책

쿼리에서 잘못된 것은 사례 진술이 끝이 없다는 것입니다. 이 시도:

SELECT  
    D.id,
    D.name,
    SUM(CASE WHEN D.sale_unity = 'K' 
        THEN (D.cost_price * CI.quantity_k)
        ELSE (D.cost_price * CI.quantity_u) END ) AS total_cost,
    SUM(CASE WHEN D.sale_unity = 'K' 
        THEN (D.sale_price * CI.quantity_k)
        ELSE (D.sale_price * CI.quantity_u) END ) AS net
FROM DETAIL D
INNER JOIN VOUCHER AS V ON V.id = D.voucher_id
WHERE V.client_id = 97 AND V.date BETWEEN '06/01/2012' AND '07/01/2012'
GROUP BY D.id, D.name 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top