SQL Server 2008 Ряды с 1 полем CSV - PullRequest
5 голосов
/ 15 июля 2009

Мы находимся на SQL Server 2008, и я пытаюсь выяснить, есть ли способ, чтобы хранимая процедура возвращала мои результаты в 1 поле CSV

например:

SELECT TOP 4 carModels
FROM dbo.Models

вернется

Jeep
Honda
Mitsubishi
Ford

Я бы хотел, чтобы это возвращалось в 1 поле следующим образом: Jeep, Honda, Mitsubishi, Ford

Я знаю, что мы можем сделать это с помощью сборки, временных таблиц или серверного кода, но предпочли бы не идти по этому пути. Есть ли какие-либо советы / хитрости, которые вы можете предложить, чтобы получить результат, который я ищу?

Ответы [ 2 ]

10 голосов
/ 15 июля 2009

попробуйте это:

DECLARE @x varchar(8000)

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

SELECT @x AS carModels

РЕДАКТИРОВАТЬ тот же ответ, что и выше, но вот полный код для его проверки ...

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

выход:

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

(1 row(s) affected)
0 голосов
/ 15 июля 2009

Следующее может работать. Сегодня у меня нет SQLServer для проверки.

DECLARE @Str VARCHAR(8000)
    SET @Str = SPACE(0)
    SELECT @Str = @Str + ',' + SUBSTRING(@Str + Models.Name, 1, 10)
      FROM dbo.Models
    PRINT @Str 

Это то, что вы можете сделать на клиенте? Если бы у меня был выбор, я бы, вероятно, удалил бы его из слоя данных и поместил бы на клиент, отформатировав его в CSV, когда мне это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...