3
대답 GORDONS에 따르면 다음 출력을 얻기 위해 쿼리를 구현했습니다.SQL에서 case가있는 조건
SELECT "SUPPLIERID","ARTIKEL",(case when @x - "cumlativesum") < 0 then NULL else (@x - "cumlativesum") end) as "VALUE_DRILL_DOWN"
from
(SELECT T1."ARTIKEL",T1."SUPPLIERID",(select sum("PIECES") from EXAMPLE_TABLE T2 where T2."ROW_ID" <= T1."ROW_ID"and T2."SUPPLIERID" = T1."SUPPLIERID" and T2."ARTIKEL"=T1."ARTIKEL") as "cumlativesum" from :EXAMPLE_TABLE T1)
를하지만이 방식으로 출력하려면 :
ROW_ID ARTIKEL SUPPLIERID ORGID PIECES COSTPRICE DISCOUNT VALUE_DRILL_DOWN
1 TV SONY 922 6 110 2.5 14
2 TV SONY 922 10 80 1 4
3 TV SONY 922 6 65 1.5 0
4 TV SONY 922 14 95 1.5 Null
5 TV SONY 922 18 95 1.5 Null
6 TV SONY 922 4 95 1.5 Null
내가 행 1에서 계산 예에 참여 행을 원하는 다음과 같이
ROW_ID ARTIKEL SUPPLIERID ORGID PIECES COSTPRICE DISCOUNT VALUE_DRILL_DOWN
1 TV SONY 922 6 110 2.5 14
2 TV SONY 922 10 80 1 4
3 TV SONY 922 6 65 1.5 0
4 TV SONY 922 14 95 1.5 0
5 TV SONY 922 18 95 1.5 0
6 TV SONY 922 4 95 1.5 0
내 쿼리입니다 ~ 3까지만 값과 계산에 참여하지 않는 모든 행을 NULL로 만들 수 있습니다. 세 번째 행에서 알 수 있듯이 값은 (4-6 = -2)입니다. 값이 음수이더라도 행은 값 "20
"의 일부입니다. 따라서 값은 -2
또는 NULL
대신 0
으로 설정됩니다. 조건을 (case when @x - "cumlativesum") < 0 then NULL
으로 변경하면 값이 0
이상인 모든 행이 NULL로 설정됩니다.
의견을 보내 주시면 감사하겠습니다.
고마워요. 그게 진지하게 내 마음을 쳤어. 너는 나의 날을 구한다. 정말 감사합니다. CHEERS :) –
안녕하세요 고든, 지금까지 당신의 지원은 엄청났습니다. 아직도 나는 너에게 마지막 호의를 묻고 싶다. 나는이 질문을 http://stackoverflow.com/questions/21727215/nested-case-in-sql에 게시한다. 쿼리를 약간 개선하면 문제가 해결됩니다. 도와주세요. 감사 –