计算 SQL 服务器中同一行内的值

Counting values within the same row in SQL Server

我的 SQL 服务器问题如下:假设我们有客户,我们希望根据 4 个类别 (Score_1...Score_4) 对他们进行评分0 到 2。我有一个 table 如下所示:

我想让我的代码做的是计算每个客户收到的 0、1 和 2 值的数量。结果 table 我想得到的结果是这样的:

所以client_1得到了两​​个0分,一个1分和一个2分,client_2得到了一个0分,一个1分和两个2分。有什么建议么?提前致谢!

您可以取消透视,然后进行条件聚合:

select t.id, 
    sum(case when x.score = 0 then 1 else 0 end) cnt_0,
    sum(case when x.score = 1 then 1 else 0 end) cnt_1,
    sum(case when x.score = 2 then 1 else 0 end) cnt_2
from mytable t
cross apply (values (score_1), (score_2), (score_3), (score_4)) x(score)
group by t.id