如何在不使用 XML 路径和临时变量的情况下获取一个逗号分隔值中的列值

How to get column values in one comma separated value without using XML path and temporary variable

我有一个 table 'City',其中包含如下行:

ID  CityName
1   Chennai
2   Bangalore
3   Delhi
4   Mumbai

我想使用 select 查询得到类似 'Chennai,Bangalore,Delhi,Mumbai' 的结果。

当我搜索 Google 时,答案使用 XMLPATH 或临时变量。有什么办法可以不用这些吗?

CREATE TABLE [dbo].[Cities](
    [Id] [int] NULL,
    [CityName] [varchar](50) NULL
) ON [PRIMARY]

INSERT INTO [dbo].[Cities]
           ([Id],[CityName])
     VALUES
           (1,'New York'),
           (2,'Miami'),
           (3,'Orlando')
GO

DECLARE @listStr VARCHAR(MAX)

SELECT @listStr = COALESCE(@listStr+',' ,'') + CityName
FROM Cities

SELECT @listStr

编辑: 另请阅读此 post,它包含多种方法,您可以通过这些方法实现自己的目标。

http://www.sqlmatters.com/Articles/Converting%20row%20values%20in%20a%20table%20to%20a%20single%20concatenated%20string.aspx