我有一个表格,长这样:
ID x1 x2 x3 x4
1 20 30 0 0
2 60 0 0 0
3 10 30 0 0
4 30 30 30 30
我希望能够查询并返回该行中值大于0的列数及其ID。因此,结果应如下所示:
ID Count
1 2
2 1
3 2
4 4
我有一个表格,长这样:
ID x1 x2 x3 x4
1 20 30 0 0
2 60 0 0 0
3 10 30 0 0
4 30 30 30 30
我希望能够查询并返回该行中值大于0的列数及其ID。因此,结果应如下所示:
ID Count
1 2
2 1
3 2
4 4
试试这个:
Select
ID,
Case When x1 <> 0 Then 1 Else 0 End +
Case When x2 <> 0 Then 1 Else 0 End +
Case When x3 <> 0 Then 1 Else 0 End +
Case When x4 <> 0 Then 1 Else 0 End as Count
From MyTable
虽然这很容易编码,但你拥有的列越多,你的选择就会变得越大,并且你将不得不添加更多的列。
SELECT ID,
IIF (x1 > 0, 1, 0) +
IIF (x2 > 0, 1, 0) +
IIF (x3 > 0, 1, 0) +
IIF (x4 > 0, 1, 0)
FROM MyTable