如何获取列值等于"True"的列名的逗号分隔列表

Joh*_*ohn 0 sql database sql-server

我想编写一个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
Run Code Online (Sandbox Code Playgroud)

我的预期结果是:

1  c1, c3    
2  c1, c2    
3  c2    
4  c1    
5  c1, c3    
6  c1    
7  c3
Run Code Online (Sandbox Code Playgroud)

我尝试了很多,但没有运气.

Gor*_*off 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;
Run Code Online (Sandbox Code Playgroud)