SQL Query检查同一行中非空的属性

时间:2015-07-29 13:10:09

标签: sql-server sql-server-2008

我有一个包含6个属性的表:

Att1   Att2   Att3   Att4   Att5   Total
Value  Null   Null   Null   Null    1
Null   Value  Null   Null   Null    1
Value  Value  Value  Value  Value   5
Null   Null   Value  Value  Value   3 

我想要做的是检查每一行中有哪些属性有价值并更新“总计”'根据每行中有多少个值。就像我在上表中所示。

1 个答案:

答案 0 :(得分:2)

这样的事情:

UPDATE TableName
  SET total = 
    CASE WHEN Att1 IS NULL THEN 0 ELSE 1 END
    + CASE WHEN Att2 IS NULL THEN 0 ELSE 1 END    
    + CASE WHEN Att3 IS NULL THEN 0 ELSE 1 END
    + CASE WHEN Att4 IS NULL THEN 0 ELSE 1 END
    + CASE WHEN Att5 IS NULL THEN 0 ELSE 1 END