基于SQL条件执行每行求和

基于SQL条件执行每行求和,sql,vba,ms-access,Sql,Vba,Ms Access,我想知道如何根据使用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

我想知道如何根据使用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
将它们连接起来,但不确定如何做到这一点

我在别处找不到类似的问题/解决方案。谢谢你的帮助

您可以使用
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;

你有多少列。数据总是L还是Q?数据的格式不利于正常聚合;您必须首先取消打印数据,以便获得ID、colName和value;然后使用条件聚合。或者您可以对每一列使用if语句,但这需要大量编写。@C结果我可以有两列以上,但我有一组列,因此如果需要,可以对其进行硬编码。