我正在尝试旋转表格以获得 3 列
我的示例表如下:
CREATE TABLE tbl1 (A1 int, cA1 int,A2 int, cA2 int,A3 int, cA3 int)
GO
INSERT INTO tbl1 VALUES (60,2,30,3,10,5);
GO
我使用下面的查询来获取两列的结果:
select A, value from tbl1
unpivot
(
value
for A in ([A1], [A2],[A3])
) un1;
结果如下:
A | value
--+-------
A1|60
A2|30
A3|10
但我想添加第二列,结果如下:
A | value1 | value2
--+--------+--------
A1| 60 | 2
A2| 30 | 3
A3| 10 | 5
有什么帮助吗?
我会用APPLY
:
select v.*
from tbl1 t cross apply
(values ('A1', t.A1, t.cA1),
('A2', t.A2, t.cA2),
('A3', t.A3, t.cA3)
) v(A, value1, value2);
CROSS APPLY
实现了一个lateral加入。这比仅仅反转数据要强大得多,尽管反转数据是开始学习横向连接的一种简单方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)