0

如何将所有“是”记录合并到一个列表中?我有以下脚本,我想将其组合成一个 varchar 列表,最好使用 XML 或本机 SQL 函数。这些值是 1 或 0。我希望这些值仅在它们为 1 时出现:

select
x.Energetic,
x.Undistressed,
x.Wellnourished,
x.Goodhygiene

From
health_x x

在此示例中,如果 Energetic 和 Wellnourished 为 1,其他为 0,那么我希望它显示为:

Energetic, Wellnourished
4

2 回答 2

1

您可以使用条件连接来做到这一点。

诀窍是正确输入分隔符。此版本放在,每个字符串之前,然后用于stuff()摆脱第一次出现:

select STUFF((case when x.Energetic = 1 then ', Energetic' else '' end) +
             (case when x.Undistressed = 1 then ', Undistressed' else '' end) +
             (case when x.Wellnourished = 1 then ', Wellnourished' else '' end) +
             (case when x.Goodhygiene = 1 then ', Goodhygiene' else '' end),
             1, 2, ''
            )
from health_x x
于 2013-04-30T15:20:36.737 回答
1
select stuff((
select 
case when x.Energetic = 1 then ', Energetic' else '' end + 
case when x.Undistressed = 1 then ', Undistressed' else '' end + 
case when x.Wellnourished = 1 then ', Wellnourished' else '' end + 
case when x.Goodhygiene = 1 then ', Goodhygiene' else '' end

From
health_x x
for xml path('')
),1,2,'');
于 2013-04-30T15:17:30.137 回答