Вложенный 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. Какие-либо предложения?

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос