2

下の表を確認してください

Code   Name  
-----------
 001   A
 001   B

私の質問は

Select Code,Name from TableA

しかし、私は次のようなレコードが必要です

Code  Name
------------
001    A,B

どうやってやるの?

4

2 に答える 2

3

MySQLとは異なりSQL Server、このための組み込み関数はありませんがCROSS APPLYFOR XML PATH('')

SELECT  a.Code, 
        SUBSTRING(d.[Name],1, LEN(d.[Name]) - 1) AddressList
FROM    
        (
            SELECT DISTINCT Code
            FROM TableA
        ) a
        CROSS APPLY
        (
            SELECT [Name] + ', ' 
            FROM TableA AS B 
            WHERE A.[Code] = B.[Code] 
            FOR XML PATH('')
        ) D ([Name]) ;

SQLFiddleデモ

于 2012-10-02T07:02:32.763 に答える
0

を使用できますCOALESCE。次のサンプルはこれを変えます

こんにちは

世界

これは

自分

これに

こんにちは、世界、それは、私です

DECLARE @test NVARCHAR(2000)
SELECT @test = COALESCE(@test + ', ', '') + Field FROM Sampletable WHERE … AND Field IS NOT NULL
SELECT @test

これをサンプルに適合させることができるはずです。

于 2012-10-02T07:10:34.333 に答える