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]