sta*_*ser 0 sql t-sql sql-server sql-server-2008
基于下表
Area S1 S2 S3 S4
--------------------
A1 5 10 20 0
A2 11 19 15 20
A3 0 0 0 20
Run Code Online (Sandbox Code Playgroud)
我想生成一个输出,它将给出不具有"0"的列数.
所以输出就是
Area S1 S2 S3 S4 Count
-------------------------
A1 5 10 20 0 3
A2 11 19 15 20 4
A3 0 0 0 20 1
Run Code Online (Sandbox Code Playgroud)
一种方法是将case语句的结果添加到一起:
select area, s1, s2, s3, s4,
case when S1 <> 0 then 1 else 0 end +
case when S2 <> 0 then 1 else 0 end +
case when S3 <> 0 then 1 else 0 end +
case when S4 <> 0 then 1 else 0 end as Count
from YourTable
Run Code Online (Sandbox Code Playgroud)