我有一张名为Rule的表。
RuleId Name
1 A1
2 A2
3 A3
.
.
.
现在我希望所有的名字都是单一的结果。
可能像@allnames = A1,A2,A3
有人可以建议如何在不使用循环的情况下为此编写查询吗?
提前致谢...
答案 0 :(得分:5)
试试这个:
SELECT @allnames = STUFF((SELECT distinct ',' + Name
FROM table1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
答案 1 :(得分:4)
DECLARE @names NVARCHAR(MAX)
SELECT @names = coalesce(@names + ',', '') + coalesce(Name, '')
FROM (SELECT distinct Name FROM Rule) x
print @names
答案 2 :(得分:3)
试试这个 -
DECLARE @temp TABLE ([RuleId] INT, Name CHAR(2))
INSERT INTO @temp([RuleId], Name)
VALUES
(1, 'A1'),
(2, 'A2'),
(3, 'A3')
DECLARE @all_names NVARCHAR(MAX)
SELECT @all_names = STUFF((
SELECT DISTINCT ',' + Name
FROM @temp
--ORDER BY Name
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SELECT @all_names
输出 -
---------------
A1,A2,A3