Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中带大小写的条件_Sql_Sql Server_Select - Fatal编程技术网

SQL中带大小写的条件

SQL中带大小写的条件,sql,sql-server,select,Sql,Sql Server,Select,根据答案,我实现了查询以获得以下输出 ROW_ID ARTIKEL SUPPLIERID ORGID PIECES COSTPRICE DISCOUNT VALUE_DRILL_DOWN 1 TV SONY 922 6 110 2.5 14 2 TV SON

根据答案,我实现了查询以获得以下输出

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)
我希望参与计算的行(即从第1行到第3行)仅具有值,而不参与计算的所有行都为NULL。 正如我们在第三行中看到的,值是(4-6=-2)。即使该值为负值,该行也是值“
20
”的一部分。因此,该值被设置为
0
,而不是
-2
NULL
。 如果我将条件更改为
(当@x-“cumlativesum”时为空,则值超出
0
的所有行都设置为空


如果您有任何建议,我们将不胜感激。

您可以通过查找累积金额第一次超过/达到
0
的记录来获得您想要的。您可以通过减去正在累积的值来实现这一点。我认为该查询如下所示:

SELECT "SUPPLIERID", "ARTIKEL",
       (case when @x - cumulativesum <= 0 and @x - (cumulativesum -BZBAS_AW) > 0
             then 0
             when @x - "cumulativesum" <= 0
             then NULL
             else @x - "cumulativesum"
        end) as "VALUE_DRILL_DOWN"
from (SELECT T1."ARTIKEL", T1."SUPPLIERID", T1.BZBAS_AW
             (select sum("BZBAS_AW")
              from EXAMPLE_TABLE T2
              where T2."ROW_TEST" <= T1."ROW_TEST" and T2."LIFNR" = T1."LIFNR" and T2."ARTIKEL"=T1."ARTIKEL"
             ) as "cumulativesum"
     from EXAMPLE_TABLE T1
     ) t
选择“供应商ID”、“ARTIKEL”,
(当@x-累积量为0时的情况)
然后0

当@x-“累积性”非常感谢。我并没有认真想过。你拯救了我的一天。非常感谢你。干杯:)嘿,戈登,你到现在为止的支持是巨大的。我还是想请你帮我最后一个忙。我刚刚发布了这个问题。对查询进行一个小的增强可以解决我的问题。请帮忙。谢谢
SELECT "SUPPLIERID", "ARTIKEL",
       (case when @x - cumulativesum <= 0 and @x - (cumulativesum -BZBAS_AW) > 0
             then 0
             when @x - "cumulativesum" <= 0
             then NULL
             else @x - "cumulativesum"
        end) as "VALUE_DRILL_DOWN"
from (SELECT T1."ARTIKEL", T1."SUPPLIERID", T1.BZBAS_AW
             (select sum("BZBAS_AW")
              from EXAMPLE_TABLE T2
              where T2."ROW_TEST" <= T1."ROW_TEST" and T2."LIFNR" = T1."LIFNR" and T2."ARTIKEL"=T1."ARTIKEL"
             ) as "cumulativesum"
     from EXAMPLE_TABLE T1
     ) t