Sql server 2012 将单个列连接到单个行

Sql server 2012 将单个列连接到单个行,sql-server-2012,Sql Server 2012,我有一个问题 select [I].[name_Text] as [Name] from [dbo].[payments$] [G] inner join [dbo].[payment$] [H] on [H].payments_Id = [G].payments_Id inner join [dbo].[Payment] [I] on [I].[pay

我有一个问题

select 
     [I].[name_Text] as [Name] 
        from 
      [dbo].[payments$] [G]
    inner join
        [dbo].[payment$] [H]
    on 
        [H].payments_Id = [G].payments_Id
    inner join
        [dbo].[Payment] [I]
    on 
        [I].[payment_Id] = [H].payment_Id
    WHERE 
        [G].restaurant_Id = 0 and [I].[lang] = 'en'
我得到的输出是

Name
-----------------
American Express
EuroCard / MasterCard
VISA
VISA Electron
我需要一个输出像美国运通,欧洲卡/万事达卡,维萨,维萨电子

我尝试这个查询

DECLARE @Names VARCHAR(Max)  
SELECT @Names = COALESCE([A].[Name] + ' ','') 
        FROM  
            (select [I].[name_Text] as [Name] from [dbo].[payments$] [G]
        inner join
            [dbo].[payment$] [H]
        on 
            [H].payments_Id = [G].payments_Id
        inner join
            [dbo].[Payment] [I]
        on 
            [I].[payment_Id] = [H].payment_Id
        WHERE 
            [G].restaurant_Id = 0 and [I].[lang] = 'en') A
SELECT @Names as [name]
但我还是被放出来了

name
----------
VISA Electron 

任何其他实现这一点的方法实际上都不支持组连接的方法,其行为可能是不确定的。无论如何,您需要使用:

DECLARE @Names VARCHAR(Max) = ''
SELECT @Names = @Names + COALESCE([A].[Name] + ' ','') 
        FROM  
            (select [I].[name_Text] as [Name] from [dbo].[payments$] [G]
        inner join
            [dbo].[payment$] [H]
        on 
            [H].payments_Id = [G].payments_Id
        inner join
            [dbo].[Payment] [I]
        on 
            [I].[payment_Id] = [H].payment_Id
        WHERE 
            [G].restaurant_Id = 0 and [I].[lang] = 'en') A
SELECT @Names as [name]