我有以下查询:
SELECT
'' + CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
这会返回17,000 +行。有没有办法让所有这些行返回1值?例如:
6A7A24CD-061C-4653-9790-882D90F81E1D,0980722E-6E96-4498-B3BB-BFB4CA60EAC6,etc etc etc.
我正在尝试将其用作测试参数。
答案 0 :(得分:5)
这对你有用吗?
DECLARE @v VARCHAR(MAX)
SELECT @v = ''
SELECT
@v = @v + CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
WHERE c.ClientId IS NOT NULL
SELECT @v
注意:请注意,如果添加ORDER BY,则无法保证对其进行排序,在这种情况下使用xml路径,如Remus' answer
中所示另请参阅:Concatenate Values From Multiple Rows Into One Column Ordered
答案 1 :(得分:4)
本文涵盖了您可以使用的一些技巧:Concatenating Row Values in Transact-SQL。我最喜欢的技术是黑盒XML方法:
SELECT cast(c.ClientId as varchar(20)) + ','
FROM [dbo].[tblClient] c
for xml path(''), type;