gpt4 book ai didi

sql-server - SQL Server 动态枢轴列名称

转载 作者:行者123 更新时间:2023-12-01 00:16:57 25 4
gpt4 key购买 nike

为了我的应用程序的必要性,我必须将查询的列名作为第一行返回。
现在我必须旋转这个结果,以便将它与我的结果集联合起来,但困难的部分是:它必须是动态的,所以如果我向这个表添加新列,SELECT 将把所有名称都旋转。

以下 SELECT 给我带来了列名:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Codes'
ORDER BY INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION

我的结果集是:
COLUMN_NAME
Id
CodeName
Country
StartDate
EndDate

我期望的是:
Id    CodeName    Country    StartDate    EndDate (... whatever other columns I might have)

有没有什么简单的方法可以在不硬编码列名的情况下做到这一点?

先感谢您!

最佳答案

DECLARE @cols NVARCHAR (MAX)

SELECT @cols = COALESCE (@cols + ',[' + COLUMN_NAME + ']',
'[' + COLUMN_NAME + ']')
FROM (SELECT DISTINCT COLUMN_NAME,INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION O
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'CODES') PV
ORDER BY O


DECLARE @query NVARCHAR(MAX)
SET @query = '
SELECT TOP 0 * FROM
(
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''CODES''
) x
PIVOT
(
MIN(COLUMN_NAME)
FOR [COLUMN_NAME] IN (' + @cols + ')
) p

'
EXEC SP_EXECUTESQL @query

关于sql-server - SQL Server 动态枢轴列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602733/

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