gpt4 book ai didi

sql - T-SQL :Transform variable number of rows into columns

转载 作者:行者123 更新时间:2023-12-03 03:24:19 25 4
gpt4 key购买 nike

当我运行一个返回一列且返回行数可变的 SQL 查询时,我想将每一行转换为列 VALUE(我不介意列标题/标题是什么)。

例如

Column1
-------
a
b
c
d
e

我想要一个脚本,将上面的内容转换成一个表格,例如:

Col1 Col2 Col3 Col4 Col5
------------------------
a b c d e

(请注意,我不关心列名称)。

我知道我无法使用 PIVOT,因为行号不固定(它们基于 SQL 查询)。

有什么想法吗?

谢谢!

最佳答案

您正在尝试转换结果并在列名称中包含计数器。由于我假设您不知道潜在的列数,因此您需要使用动态 SQL 来完成此操作。

使用 ROW_NUMBER 获取计数器应该接近:

declare @cols AS NVARCHAR(MAX), 
@colswithalias AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)

set @colswithalias = STUFF((SELECT distinct ',' + QUOTENAME(col1)
+ ' AS Col'
+ CAST(ROW_NUMBER() OVER (ORDER BY col1) as varchar(10))
FROM yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')

set @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1)
FROM yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')


set @query = 'SELECT ' + @colswithalias + '
from
(
select col1 rn, col1
from yourtable
) x
pivot
(
max(rn)
for col1 in (' + @cols + ')
) p '

execute(@query)

关于sql - T-SQL :Transform variable number of rows into columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17288129/

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