我有一些数据结构如下:
ID COL1 COL2 COL3 COL4 COL5
0 20 -1 -2 3 8
1 6 0 5 -5 6
2 -5 -2 5 -2 -1
想从该表的结构上重新生成一列数据,这列的数据值就负数的总和,ID为关键列,在上面的假设数据中,重新生成的一列的值应该如下:
-3
-5
-10
请问SQL语句帮我解决,谢谢了。
------解决方案--------------------
还少了一项+(sign(COL5)-1)*COL5
------解决方案--------------------
select (case when col1 < 0 then col1 else 0 end ) + (case when col2 < 0 then col2 else 0 end ) + (case when col3 < 0 then col3 else 0 end )+(case when col4 < 0 then col4 else 0 end )+(case when col5 < 0 then col5 else 0 end ) from 表
------解决方案--------------------
create table #t(ID int,COL1 int,COL2 int,COL3 int,COL4 int,COL5 int)
insert into #t
select 0,20,-1,-2,3,8
union all select 1,6,0,5,-5,6
union all select 2,-5,-2,5,-2,-1
select case when col1> 0 then 0 else col1 end+
case when col2> 0 then 0 else col2 end+
case when col3> 0 then 0 else col3 end+
case when col4> 0 then 0 else col4 end+
case when col5> 0 then 0 else col5 end
from #t
/*
-----------
-3
-5
-10
(所影响的行数为 3 行)
*/