循环遍历列SQL

Wad*_* M. 5 sql sql-server csv loops

我正在寻找一种循环表的列来生成输出的方法,如下所述.

该表看起来像这样:

ID  Name     OPTION1 OPTION2 OPTION3 OPTION4 OPTION5
1   MyName1  1       0       1       1       0
2   MyName2  0       0       1       0       0

输出看起来像这样:

MyName1 -> OPTION1, OPTION3, OPTION4
MyName2 -> OPTION3

这样做的任何方向都将非常感激.否则,我想我将不得不使用游标或临时表...数据库引擎是MSSQL.我在数据库级别进行格式化的原因是将其输出提供给有限的可编程环境.

更新:输出可以以任何形式,一串或多行字符串.

更新:通过使用@str = @str + ...构建字符串是否可以实现这一目标?

更新:我更改了输出...这应该更容易.

谢谢!

use*_*035 4

好吧,如果列数已知,您可以这样做:

SELECT  
  MyName + " ->"
  + case OPTION1 when 1 then ' OPTION1' else '' end
  + case OPTION2 when 1 then ' OPTION2' else '' end
  + ...
FROM
 Table
Run Code Online (Sandbox Code Playgroud)

如果在创建查询时列是未知的 - 我可能仍然会使用一些动态创建的 SQL。优点是代码可能可以满足您的要求并且非常简单。