Отправка вывода хранимой процедуры в виде разделенных запятыми, а не нескольких строк - PullRequest
0 голосов
/ 08 марта 2019

У меня есть хранимая процедура, которая возвращает несколько строк с 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

Могу ли я отправить это какРазделенные запятыми значения в первом столбце одинаковы. Я хочу отправить только одну строку без дублирования имен в нескольких строках, а также отправить другие столбцы в виде одной строки только в виде значений, разделенных запятой.

Любые мысли и лучший способ сделать этоэтот?Кроме того, как бы я изменил свой запрос на выборку?

Мой первый столбец - это ввод хранимой процедуры, поэтому возвращаю и это:)

Я думал о временной таблице или табличной переменной, но как это сделать, еслитак?Пожалуйста, помогите

1 Ответ

1 голос
/ 08 марта 2019

Это можно сделать с помощью курсора

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 Я думаю,

Редактировать: удалено, выбрав "Путешествия"

...