5

SQL Server 2008を使用していて、ストアドプロシージャで結果を1つのCSVフィールドに返す方法があるかどうかを調べようとしています。

例えば:

SELECT TOP 4 carModels
FROM dbo.Models

戻るだろう

Jeep
Honda
Mitsubishi
Ford

ジープ、ホンダ、三菱、フォードのよ​​うに1つのフィールドに戻してほしい

アセンブリ、一時テーブル、またはサーバー側のコードを使用してこれを実行できることはわかっていますが、そのルートを使用したくないと考えています。私が探している結果を得るためにあなたが提案できるヒント/トリックはありますか?

4

2 に答える 2

10

これを試して:

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)
于 2009-07-15T15:04:23.200 に答える
0

以下が機能する可能性があります。今日、確認するSQLServerがありません。

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

これはクライアントでできることですか?選択肢があれば、おそらくデータレイヤーから削除してクライアントに配置し、必要なときにCSVにフォーマットします。

于 2009-07-15T15:03:58.927 に答える