gpt4 book ai didi

将列合并为一个的 SQL 函数

转载 作者:行者123 更新时间:2023-12-02 08:25:34 27 4
gpt4 key购买 nike

我需要创建一个 SQL 函数,将 x 列和 y 行组合成 1 列,行以逗号分隔并按字母顺序排序。

例子

1          2           3         4
A B C D
E F G H
I J K L

应该变成

1
A,B,C,D
E,F,G,H
I,J,K,L

我尝试搜索,但找不到任何不包含硬编码列的解决方案。

最佳答案

我不清楚您为什么要避免对列进行硬编码,但这可行 ( based on idea here )。

SELECT SUBSTRING(concatenated, 2, 0 + 0x7FFFFFFF)
FROM YourTable C
CROSS APPLY (SELECT ',' + t.c.value('.', 'NVARCHAR(128)')
FROM (SELECT (SELECT C.*
FOR XML RAW, TYPE) AS x)v
CROSS APPLY v.x.nodes('row/@*') AS t(c)
ORDER BY t.c.value('.', 'NVARCHAR(128)')
FOR XML PATH('')) CA(concatenated)

SQL Fiddle

也可以跨行连接

SELECT SUBSTRING(concatenated, 2, 0 + 0x7FFFFFFF)
FROM (SELECT ',' + t.c.value('.', 'NVARCHAR(128)')
FROM (SELECT (SELECT *
FROM YourTable
FOR XML RAW, TYPE) AS x)v
CROSS APPLY v.x.nodes('row/@*') AS t(c)
ORDER BY t.c.value('.', 'NVARCHAR(128)')
FOR XML PATH('')) CA(concatenated)

关于将列合并为一个的 SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32549461/

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