-5

我想要 Sql 查询的结果

id1     id2     id3     Count Id
A001    A001    A001    3
A001    NULL    A001    2
A001    NULL    NULL    1
4

2 回答 2

1

在 SQL Server 中,我会使用VALUES构造:

SELECT t.*,
       (SELECT COUNT(tt.ids) FROM ( VALUES (t.id1), (t.id2), (t.id3) ) tt(ids)
       ) as Count_Id
FROM table t;

在标准 SQL 中,您可以使用CASEExpression :

SELECT t.*,
       ( (CASE WHEN ID1 IS NOT NULL THEN 1 ELSE 0 END) +
         (CASE WHEN ID2 IS NOT NULL THEN 1 ELSE 0 END) +
         (CASE WHEN ID3 IS NOT NULL THEN 1 ELSE 0 END) 
       ) AS Count_Id
FROM table t
于 2019-02-01T09:35:09.377 回答
0

你有没有找到类似下面的东西

 select id1,id2,id3, 
case when id1 is not null then 1  else 0 end+ 
case when id2 is not null then 1 else 0 end+
case when id3 is not null then 1 else 0 end as val
于 2019-02-01T09:35:08.820 回答