在SQL查询中获取逗号分隔值

时间:2012-10-02 07:01:41

标签: sql sql-server-2008-r2

请查看下表

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

我的查询是

Select Code,Name from TableA

但我需要像

这样的记录
Code  Name
------------
001    A,B

我该怎么做?

2 个答案:

答案 0 :(得分: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 Demo

答案 1 :(得分:0)

您可以使用COALESCE。以下示例将此

  

您好

     

世界

     

这是

     

进入这个

  

Hello,World,It's,Me

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

您应该能够根据您的样本进行调整。