我是SQL的新手,我试图找出如何对几列进行SUM并使用1或0更新现有列,如果列的SUM大于0。 此外,确保为null值分配0值。
如何在T-SQL中执行以下操作?
if (select (coalesce(COL1, 0) +
coalesce(COL2 0) +
coalesce(COL3, 0) +
coalesce(COL4, 0) +
coalesce(COL5, 0) from SOMETABLE where X_CONDITION = 10) > 0)
update SOMETABLE set ABC_COLUMN = 1
else
set ABC_COLUMN = 0;
编辑:
目前该表看起来有点像这样:
x_condition | col1 | col2 |col3| col4| col5| abc_column
------------| -----| -----| ---| ----|-----|-----------
7 | 1 | | | | | 0 (this in incorrect)
7 | 0 | 0 | | 0 | | 0 (this is correct)
5 | 1 | 1 | | | | 0 (this is incorrect)
我希望修复abc_column - 几乎就像一个标志:
x_condition | col1 | col2 |col3| col4| col5| abc_column
------------| -----| -----| ---| ----|-----|-----------
7 | 1 | | | | | 1
7 | 0 | 0 | | 0 | | 0
5 | 1 | 1 | | | | 1
谢谢!
答案 0 :(得分:1)
这听起来像update
语句,带有一些算术:
update SOMETABLE
set ABC_COLUMN = (case when coalesce(COL1, 0) + coalesce(COL2 0) +
coalesce(COL3, 0) + coalesce(COL4, 0) +
coalesce(COL5, 0) > 0
then 1 else 0
end);
你几乎拥有查询中的所有部分。
答案 1 :(得分:1)
使用UPDATE语句,格式如下:
UPDATE SOMETABLE
SET ABC_COLUMN = CASE WHEN ISNULL(COL1,0) > 0 THEN 1
WHEN ISNULL(COL2,0) > 0 THEN 1
WHEN ISNULL(COL3,0) > 0 THEN 1
WHEN ISNULL(COL4,0) > 0 THEN 1
WHEN ISNULL(COL5,0) > 0 THEN 1 ELSE 0 END