我有以下格式的数据。
order_no rate jan feb mar ....
1 1200 2 4
2 1000 1 5
3 2400 14 3
现在我想转置这个表以获得以下输出。
order_no rate month unit
1 1200 feb 2
1 1200 mar 4
2 1000 jan 1
2 2400 mar 5 and so on..
我该怎么做?
最佳答案
可以使用交叉连接在数据上创建“临时”规范化视图:
select o.order_no, o.rate, v.*
from orders o
cross join lateral (
values
('jan', jan),
('feb', feb),
('mar', mar),
...
('dec', dec)
) as v(month, unit)
如果要排除没有值的月份,可以添加
where v.unit is not null
到查询
在线示例:http://rextester.com/PBP46544
关于sql - 在PostgreSQL中将列数据转换为行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51400804/