我想编写一个SQL Server查询,它可以选择所有逗号分隔列列表,其中该行的列值为“True”。 这就是我的表格,这里c1,c2,c3和c4是列
ID c1 c2 c3 c4
1 Yes No Yes No
2 Yes Yes No No
3 No Yes No No
4 Yes No No No
5 Yes No Yes No
6 Yes No No No
7 No No Yes No
我的预期结果是:
1 c1, c3
2 c1, c2
3 c2
4 c1
5 c1, c3
6 c1
7 c3
我尝试了很多但没有运气。
答案 0 :(得分:5)
您可以使用条件连接来执行此操作:
select id,
stuff( (case when c1 = 'Yes' then ', c1' else '' end) +
(case when c2 = 'Yes' then ', c2' else '' end) +
(case when c3 = 'Yes' then ', c3' else '' end) +
(case when c4 = 'Yes' then ', c4' else '' end),
1, 2, ''
)
from t;