3
根據GORDONS答案我實現了查詢以獲得以下輸出。SQL中的CASE條件
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
我的查詢如下:
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的行到3只有值和所有不參與計算的行都是NULL。 正如我們在第三行所看到的,值是(4-6 = -2)。即使該值爲負值,該行也是值「20
」的一部分。因此,該值設置爲0
而不是-2
或NULL
。 如果將條件更改爲(case when @x - "cumlativesum") < 0 then NULL
,則值超出0
的所有行都將設置爲NULL。
任何建議,將不勝感激。
非常感謝。這嚴重影響了我的想法。你節省了我的一天。非常感謝。 CHeers :) –
嘿戈登,你的支持到現在一直是巨大的。不過,我想問你最後一個忙。我只是發佈這個問題http://stackoverflow.com/questions/21727215/nested-case-in-sql。查詢的一個小增強將解決我的問題。請幫忙。謝謝 –