gpt4 book ai didi

sql - 逗号分隔两个单独的列

转载 作者:行者123 更新时间:2023-12-02 00:58:56 25 4
gpt4 key购买 nike

在 SQL Server 2012 表中,我想从两列中取出所有行,并将它们变成一行,仍然是两列,但每列都以逗号分隔。

例如

Customerid    |    FacilityId
-----------------------------
1 5678
2 9101
5 6543

然后我希望结果是这样的

Customerid    |    FacilityId
-----------------------------
1,2,5 5678,9101,6543

最佳答案

您可以像这样使用 FOR XML SQL Fiddle

查询

SELECT STUFF((
SELECT ',' + CONVERT(VARCHAR(10),Customerid)
FROM Customer
FOR XML PATH('')),1,1,'') as Customerid,
STUFF((
SELECT ',' + CONVERT(VARCHAR(10),FacilityId)
FROM Customer
FOR XML PATH('')),1,1,'') as FacilityId

输出

Customerid  FacilityId
1,2,5 5678,9101,6543

编辑

您甚至可以使用变量将 csv 连接在一起,这不需要像 FOR XML 那样进行 2 次表扫描,但是在与 ORDER BY 一起使用时可能会遇到问题> 或同一查询中的其他函数。

由于您只有 3-4 行,我建议使用 FOR XML 方法

DECLARE @Customerid VARCHAR(MAX) = '',@FacilityId VARCHAR(MAX) = ''

SELECT
@Customerid += ',' + CONVERT(VARCHAR(10),Customerid),
@FacilityId += ',' + CONVERT(VARCHAR(10),FacilityId)
FROM Customer

SELECT STUFF(@Customerid,1,1,'') as Customerid, STUFF(@FacilityId,1,1,'') as FacilityId

关于sql - 逗号分隔两个单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31582273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com