Вложенный CASE в SQL
ТАБЛИЦА 1:
ARTIKEL SUPPLIERID SALE_SUM_PIECES
TV SONY 7
ТАБЛИЦА 2:
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
Мне нужно вычесть значениеX=23
наTABLE2."PIECES"
, только когда значение TABLE1. "SALE_SUM_PIECES" меньше, чем сумма "PIECES" в TABLE2. Например: значениеTABLE1."SALE_SUM_PIECES"
является7
, Теперь мне нужно проверить, в какой строке значение7 goes less than
суммаTABLE2."PIECES"
. В приведенном ниже примере первая строка в TABLE2 недопустима, потому что 7 больше 6. Но вторая строка в TABLE2 действительна, так как СУММА "ЧАСТЕЙ" из row1 и row2 в TABLE2, т.е. 6 + 10 = 16, больше, чем 7. Итак, мне нужно вычесть значениеX=23
от второго ряда к следующимTABLE2
, У меня есть следующий запрос:
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"
то есть из ряда 2. Какие-либо предложения?
Заранее спасибо.