我需要从符合要求的表中选择所有行,但是要将这些行放入一个用空格/逗号分隔的列中。现在,我在我的询问中有这个:
((SELECT ' ' + ID
FROM Items
WHERE (Consignment = Consignments.ConsignmentNo) FOR XML PATH('')), 1, 1, '') AS Items
问题是,它没有任何结果,所以它看起来像一个结果。我哪里错了?
由于
答案 0 :(得分:3)
我猜你的ID列是一个数字列,而不是一个varchar。尝试将ID转换为varchar或nvarchar。你的语法看起来很好,它应该用空格分隔。
EX:
没有演员:
select 1 as Item
into #test
union select 2
union select 3
union select 4
union select 5
select STUFF((SELECT ' ' + Item
FROM #test
FOR XML PATH('')), 1, 1, '')
输出: 2345
演员:
select 1 as Item
into #test
union select 2
union select 3
union select 4
union select 5
select STUFF((SELECT ' ' + cast(Item as nvarchar)
FROM #test
FOR XML PATH('')), 1, 1, '')
输出: 1 2 3 4 5