sql - 使用 column_names 创建一行数据透视选择
问题描述
我想让一行选择成为使用 db 中的列名的枢轴选择。
编辑:
SELECT *
FROM COR.PARAMETER_GROUP AS t WHERE GROUP_CODE = '555'
UNPIVOT
(
COLUMN_NAME
FOR VALUE IN(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PARAMETER_GROUP' AND TABLE_SCHEMA='COR' ORDER BY ORDINAL_POSITION ASC)
) AS u
--
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
ROW 1 2 3 4 5
=
*COLUMN_NAME VALUE*
COLUMN1 1
COLUMN2 2
COLUMN3 3
COLUMN4 4
基本上我试试这个,但我不能把列名放进去FOR
解决方案
您是否正在寻找这个:
CREATE TABLE #DataSource
(
[name] SYSNAME
,[pos] INT
);
INSERT INTO #DataSource ([name], [pos])
SELECT COLUMN_NAME
,ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_NAME] = 'PARAMETER_GROUP'
AND TABLE_SCHEMA='COR';
DECLARE @DynammicTSQLStatement NVARCHAR(MAX)
,@DynamicPIVOTColumns NVARCHAR(MAX);
SET @DynamicPIVOTColumns = STUFF
(
(
SELECT ',' + QUOTENAME([name])
FROM #DataSource
ORDER BY [pos]
FOR XML PATH('') ,TYPE
).value('.', 'NVARCHAR(MAX)')
,1
,1
,''
);
SET @DynammicTSQLStatement = N'
SELECT *
FROM #DataSource
PIVOT
(
MAX([pos]) FOR [name] IN (' + @DynamicPIVOTColumns + ')
) PVT';
EXEC sp_executesql @DynammicTSQLStatement;
DROP TABLE #DataSource;
我正在使用动态 T-SQL 语句来构建PIVOT
语句,以使其适用于每个表/视图。
推荐阅读
- excel - Excel 矩阵:搜索值并在其旁边提供值
- adb - LDplayer 连接到 vpn 时看不到播放器
- google-apps-script - 优化组功能Google Docs(App Script)是否有任何可能性?
- python - 设置文件中 long_description 的 Tox 错误
- android - Azure DevOps gradle 构建失败
- java - NonGUIDriver org.apache.jorphan.util.JMeterStopTestException 中的 JMeter 错误
- c# - 检测 C# 中的公共 IP 更改
- macos - 在 macOS 中单击“打开”时 Intellij IDEA 冻结
- session - Google 同意模式:通过 Google Analytics 上的同意来识别会话
- gnome-shell - 如何结束生成的 shell 脚本?