我有一个存储过程,该过程返回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
我有什么办法可以将其作为逗号分隔的值发送,因为第一列是相同的,我只希望发送一行而不在多行中复制名称,还希望仅将一行作为逗号分隔的值发送给其他列。
有什么想法和更好的方法吗?另外,我该如何修改选择查询?
我的第一列是存储过程输入,因此也要返回它:)
我正在考虑临时表或表变量,但如果这样做怎么办?请帮助
答案 0 :(得分:1)
可以使用光标完成
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)
添加回车符,否则您可以添加\ n我猜
编辑:删除了选择旅行