我想知道如何使用SQL根据列的条件对每行求和(我是SQL的新手)。
例如,我有这张桌子:
ID Col_1 Col_2 Col_3 ...
1 L L L ...
2 L Q Q ...
3 L L Q ...
4 Q Q L ...
我正在寻找的结果是:
ID count_L count_Q
1 3 0
2 1 2
3 2 1
4 1 2
我不确定该如何处理。如果我的表已转置,使用Count
函数执行此操作会更容易(我认为),但是以我的数据组织方式执行查询对我来说很棘手。我认为我需要嵌套的SQL语句并使用UNION
将它们加入,但不确定如何执行。
我在其他地方找不到类似的问题/解决方案。希望能有所帮助!
答案 0 :(得分:2)
您可以使用iif()
和+
:
select id,
(iif(col_1 = "L" , 1, 0) + iif(col_2 = "L" , 1, 0) + iif(col_3 = "L" , 1, 0) ) as count_l,
(iif(col_1 = "Q" , 1, 0) + iif(col_2 = "Q" , 1, 0) + iif(col_3 = "Q" , 1, 0) ) as count_q
from t;