T-SQL更新查询

时间:2017-06-06 00:39:54

标签: sql-server tsql

我是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

谢谢!

2 个答案:

答案 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