将存储过程输出作为逗号分隔而不是多行发送

Sending the stored procedure output as comma-separated rather than multiple rows

我有一个存储过程 returns 多行 5 列:

SELECT Travel, ID, Dept, Role, Country 
FROM TravelManager

例如,我得到:

DName   ID   Dept  Role   Country
----------------------------------
Travel  23   HR    H      USA
Travel  29   MR    M      AUS
Travel  32   FI    M      UK

我有什么办法可以将其作为逗号分隔值发送,因为第一列是相同的,我只想发送一行而不在多行中重复名称,并将其他列作为一行仅作为逗号分隔发送值。

有什么想法和更好的方法吗?另外,我将如何修改我的 select 查询?

我的第一列是存储过程输入,所以也返回它:)

我正在考虑使用临时 table 或 table 变量,但如果是这样该怎么办?请帮助

可以使用游标来完成

declare @Travel nvarchar(max)
declare @ID int
declare @Country nvarchar(max)
declare @Dept nvarchar(max)
declare @Role nvarchar(max)

declare @string nvarchar(max)

declare cursor1 cursor for
     SELECT  ID, Dept, Role, Country 
     FROM TravelManager

set @string = '';

open cursor1

fetch next from cursor1 into  @ID, @Dept, @Role, @Country

while (@@Fetch_Status <> -1)    
begin
    set @string += convert(varchar(10), @ID) + ',' +
                   @Dept + ',' + @Role + ',' + @Country + char(13) // char(13) for new line
    fetch next from cursor1 into  @ID, @Dept, @Role, @Country
end

close cursor1
deallocate cursor1


select  @string as ReturnValue

char(13) 添加回车 return 否则你可以添加 \n 我猜

编辑:删除了选择旅行