我有一个名为 Rule 的表。
RuleId Name
1 A1
2 A2
3 A3
.
.
.
现在我想要所有的名字作为一个结果。
可能就像@allnames = A1,A2,A3
有人可以建议如何在不使用循环的情况下为此编写查询吗?
提前致谢...
我有一个名为 Rule 的表。
RuleId Name
1 A1
2 A2
3 A3
.
.
.
现在我想要所有的名字作为一个结果。
可能就像@allnames = A1,A2,A3
有人可以建议如何在不使用循环的情况下为此编写查询吗?
提前致谢...
试试这个:
SELECT @allnames = STUFF((SELECT distinct ',' + Name
FROM table1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
DECLARE @names NVARCHAR(MAX)
SELECT @names = coalesce(@names + ',', '') + coalesce(Name, '')
FROM (SELECT distinct Name FROM Rule) x
print @names
试试这个——
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