sql-server - T-SQL 查询得到以下结果
解决方案
我会尝试通过UNPIVOTing数据并使用ROW_Number来获取 ColumnName 的整数,如下所示
DECLARE @t TABLE ( Column1 CHAR(1), Column2 CHAR(3))
INSERT INTO @t
(Column1,Column2)
VALUES
('A', 'AAA') ,('B', 'BBB') ,('C', 'CCC') ,('D', 'DDD')
SELECT
ColData = T.Column1
,ColName = 'Column1.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
UNION
SELECT
ColData = T.Column2
,ColName = 'Column2.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
这给出了这个结果
ColData ColName
A Column1.1
AAA Column2.1
B Column1.2
BBB Column2.2
C Column1.3
CCC Column2.3
D Column1.4
DDD Column2.4
因此,然后将其包装在 PIVOT 查询中以获得所需的输出
SELECT
[Column1.1],[Column2.1],[Column1.2],[Column2.2],[Column1.3],[Column2.3],[Column1.4],[Column2.4]
FROM(
SELECT
ColData = T.Column1
,ColName = 'Column1.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
UNION
SELECT
ColData = T.Column2
,ColName = 'Column2.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
)AS Tab
PIVOT
(
MAX(ColData)
FOR ColName IN ([Column1.1],[Column2.1],[Column1.2],[Column2.2],[Column1.3],[Column2.3],[Column1.4],[Column2.4])
) AS PIV;
输出
Column1.1 Column2.1 Column1.2 Column2.2 Column1.3 Column2.3 Column1.4 Column2.4
A AAA B BBB C CCC D DDD
推荐阅读
- javascript - 当组件 B 出现在视图中时,覆盖一个组件 A 中的样式 - Angular
- html - 在另一个崩溃中崩溃
- java - 如何使用 Stream API 按日期对列表进行分组以映射?
- php - JSON POST Empty 使用 cURL 命令
- javascript - 使用正则表达式查找对象的值
- bash - 在保留行组的同时拆分文件
- coq - 如何在 Coq 中重写给定的两个依赖类型相等
- git - git 是否有一个命令可以将工作树重置为 HEAD 但保留索引的分阶段更改?
- dictionary - 将值插入地图时出现恐慌/错误
- virtual-machine - Virtualbox 没有端口转发端口 8080 但其他端口都可以