表1:巢式病例
ARTIKEL SUPPLIERID SALE_SUM_PIECES
TV SONY 7
TABLE2:
ROW_ID ARTIKEL SUPPLIERID PIECES
1 TV SONY 6
2 TV SONY 10
3 TV SONY 6
4 TV SONY 14
5 TV SONY 18
6 TV SONY 4
我需要在TABLE2."PIECES"
減去價值X=23
,價值TABLE1只有當 「SALE_SUM_PIECES」 小於「的總和。 PIECES「在表2中。例如:TABLE1."SALE_SUM_PIECES"
的值是7
。 NOw我需要檢查在哪一行的值7 goes less than
SUM的TABLE2."PIECES"
。在以下示例中,TABLE2中的第一行無效,因爲7大於6.但TABLE2中的第二行是有效的,因爲「PIECES」從TABLE2中的row1和row2即6 + 10 = 16大於7.因此,我需要從TABLE2
的第二行減去X=23
的值到以下行。 查詢我有如下:
SELECT "SUPPLIERID", "ARTIKEL",
(case when (cumulativesum - (select "SALE_SUM_PIECES" from T1 where T1."SUPPLIERID"=T2."SUPPLIERID" and T1."ARTIKEL" = T2."ARTIKEL")) <= 0
then NULL
when (cumulativesum - (select "SALE_SUM_PIECES" from TABLE1 T1 where T1."SUPPLIERID"=T2."SUPPLIERID" and T1."ARTIKEL" = T2."ARTIKEL")) > 0
then
(case when @x - cumulativesum <= 0 and @x - (cumulativesum -PIECES) > 0
then 0
when @x - "cumulativesum" <= 0
then NULL
else @x - "cumulativesum"
end) as "VALUE_DRILL_DOWN"
from (SELECT T1."ARTIKEL", T1."SUPPLIERID", T1.PIECES
(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 "cumulativesum"
from EXAMPLE_TABLE T1
)
當我執行上面的查詢,我得到的結果如下:
ROW_ID ARTIKEL SUPPLIERID PIECES VALUE_DRILL_DOWN
1 TV SONY 6 NULL
2 TV SONY 10 7
3 TV SONY 6 1
4 TV SONY 14 0
5 TV SONY 18 Null
6 TV SONY 4 Null
但我期待有一個結果如下:
ROW_ID ARTIKEL SUPPLIERID PIECES VALUE_DRILL_DOWN
1 TV SONY 6 NULL
2 TV SONY 10 13
3 TV SONY 6 7
4 TV SONY 14 0
5 TV SONY 18 Null
6 TV SONY 4 Null
我想減去'X = 23'從TABLE2中的行開始,其中條件TABLE1."SALE_SUM_PIECES" < TABLE2."PIECES"
即從row2開始。有什麼建議麼?
在此先感謝。
在BZBAS_AW在T2什麼樣的價值觀?爲T2提供的值也請參見 – NickyvV
@NickyvV BZBAS_AW不過是結果表中的'PIECES' –
@NickyvV我已經對該問題進行了編輯。對不起,我的錯。 –