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 APPLY和来模拟它FOR 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 回答