如何在 SQL Server 2005 中将多行组合成以逗号分隔的列表?

新手上路,请多包涵

现在,我有一个这样的 SQL 查询:

 SELECT X, Y FROM POINTS

它返回如下结果:

 X    Y
----------
12   3
15   2
18   12
20   29

我想在一行中返回所有结果,如下所示(适合在 HTML 标签中使用):

 XYLIST
----------
12,3,15,2,18,12,20,29

有没有办法只使用 SQL 来做到这一点?

原文由 Joshua Carmody 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
2 个回答
DECLARE @XYList varchar(MAX)
SET @XYList = ''

SELECT @XYList = @XYList + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y) + ','
FROM POINTS

-- Remove last comma
SELECT LEFT(@XYList, LEN(@XYList) - 1)

原文由 Ben Hoffstein 发布,翻译遵循 CC BY-SA 2.5 许可协议

感谢您提供快速而有用的答案!

我刚刚找到了另一种快速的方法来做到这一点:

 SELECT  STUFF(( SELECT ',' + X + ',' + Y
                FROM Points
              FOR
                XML PATH('')
              ), 1, 1, '') AS XYList

归功于这个人:

关联

原文由 Joshua Carmody 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进