SQL Server 2008转到1个CSV字段

Chr*_*eis 5 sql csv concatenation sql-server-2008

我们在SQL Server 2008上,我试图弄清楚是否有办法让存储过程在1个CSV字段中返回我的结果

例如:

SELECT TOP 4 carModels
FROM dbo.Models
Run Code Online (Sandbox Code Playgroud)

会回来的

Jeep
Honda
Mitsubishi
Ford
Run Code Online (Sandbox Code Playgroud)

我想在1场比赛中回归:Jeep,Honda,Mitsubishi,Ford

我知道我们可以使用程序集,临时表或服务器端代码执行此操作,但不希望这样做.是否有任何提示/技巧可以建议我得到我想要的结果?

KM.*_*KM. 10

试试这个:

DECLARE @x varchar(8000)

SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM dbo.Models

SELECT @x AS carModels
Run Code Online (Sandbox Code Playgroud)

编辑与上面相同的答案,但这里有完整的代码来测试它...

declare @Models table (RowID int not null primary key identity(1,1), carModels varchar(20))
insert into @Models values ('Jeep')
insert into @Models values ('Honda')
insert into @Models values ('Mitsubishi')
insert into @Models values ('Ford')
insert into @Models values ('Mazda')

DECLARE @x varchar(8000)
SET @x=null
SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM @Models

SELECT @x AS carModels
Run Code Online (Sandbox Code Playgroud)

输出:

carModels
----------------------------------
Jeep, Honda, Mitsubishi, Ford

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)