在结果上对不同的行求和并执行大小写

时间:2018-04-11 00:53:29

标签: sql-server

我尝试在col1和col2的串联上执行总和时执行逻辑 对于。例如第1行的col3 =(0.2 + -0.1 = 0.1) 第2行=(12)等

基于求和值,我需要填充col3,使得如果< 0然后返回0否则求和值。

之前

BEFORE

AFTER

正在使用的查询

UPDATE table
SET col =  (
           CASE WHEN 
           (SELECT ABS(SUM(B.VOLUME)) FROM table B 
            WHERE CONCAT(B.col1,B.col2) = CONCAT(col1,col2)) < 1 THEN 0
            ELSE (SELECT SUM(B.VOLUME) FROM table B WHERE CONCAT(B.col1,B.col2) = CONCAT(col1,col2))
            END
            )
        FROM table B

我看不出我做错了什么。

1 个答案:

答案 0 :(得分:0)

该问题由@ZLK回答如下:

如果使用2012+,我相信这个更新语句可以通过SUM()OVER()窗口函数简单地实现。

例如,

^.*\b(Turin|Milan)\b.*$