[英]Transposing multiple related columns
While transposing single columns is pretty straight forward I need to transpose a large amount of data with 3 sets of, 10+ related columns needed to be transposed.虽然转置单列非常简单,但我需要转置大量数据,需要转置 3 组 10 多个相关列。
create table test
(month int,year int,po1 int,po2 int,ro1 int,ro2 int,mo1 int,mo2 int, mo3 int);
insert into test
values
(5,2013,100,20,10,1,3,4,5),(4,2014,200,30,20,2,4,5,6),(6,2015,200,80,30,3,5,6,7) ;
select * FROM test;
gives给
month月 | year年 | po1 PO1 | po2氧分压 | ro1 ro1 | ro2 ro2 | mo1 mo1 | mo2 mo2 | mo3 mo3 |
---|---|---|---|---|---|---|---|---|
5 5个 | 2013 2013 | 100 100 | 20 20 | 10 10 | 1 1个 | 3 3个 | 4 4个 | 5 5个 |
4 4个 | 2014 2014 | 200 200 | 30 30 | 20 20 | 2 2个 | 4 4个 | 5 5个 | 6 6个 |
6 6个 | 2015 2015年 | 200 200 | 80 80 | 30 30 | 3 3个 | 5 5个 | 6 6个 | 7 7 |
Transposing using UNPIVOT使用 UNPIVOT 转置
select
month, year,
PO, RO, MO
from ( SELECT * from test) src
unpivot
( PO for Description in (po1, po2))unpiv1
unpivot
(RO for Description1 in (ro1, ro2)) unpiv2
unpivot
(MO for Description2 in (mo1, mo2, mo3)) unpiv3
order by year
Gives me this给我这个
month月 | year年 | PO采购订单 | RO反渗透 | MO莫 |
---|---|---|---|---|
5 5个 | 2013 2013 | 100 100 | 10 10 | 3 3个 |
5 5个 | 2013 2013 | 100 100 | 10 10 | 4 4个 |
5 5个 | 2013 2013 | 100 100 | 10 10 | 5 5个 |
5 5个 | 2013 2013 | 100 100 | 1 1个 | 3 3个 |
5 5个 | 2013 2013 | 100 100 | 1 1个 | 4 4个 |
5 5个 | 2013 2013 | 100 100 | 1 1个 | 5 5个 |
5 5个 | 2013 2013 | 20 20 | 10 10 | 3 3个 |
5 5个 | 2013 2013 | 20 20 | 10 10 | 4 4个 |
5 5个 | 2013 2013 | 20 20 | 10 10 | 5 5个 |
5 5个 | 2013 2013 | 20 20 | 1 1个 | 3 3个 |
5 5个 | 2013 2013 | 20 20 | 1 1个 | 4 4个 |
5 5个 | 2013 2013 | 20 20 | 1 1个 | 5 5个 |
4 4个 | 2014 2014 | 200 200 | 20 20 | 4 4个 |
4 4个 | 2014 2014 | 200 200 | 20 20 | 5 5个 |
4 4个 | 2014 2014 | 200 200 | 20 20 | 6 6个 |
4 4个 | 2014 2014 | 200 200 | 2 2个 | 4 4个 |
4 4个 | 2014 2014 | 200 200 | 2 2个 | 5 5个 |
4 4个 | 2014 2014 | 200 200 | 2 2个 | 6 6个 |
4 4个 | 2014 2014 | 30 30 | 20 20 | 4 4个 |
4 4个 | 2014 2014 | 30 30 | 20 20 | 5 5个 |
4 4个 | 2014 2014 | 30 30 | 20 20 | 6 6个 |
4 4个 | 2014 2014 | 30 30 | 2 2个 | 4 4个 |
4 4个 | 2014 2014 | 30 30 | 2 2个 | 5 5个 |
4 4个 | 2014 2014 | 30 30 | 2 2个 | 6 6个 |
6 6个 | 2015 2015年 | 200 200 | 30 30 | 5 5个 |
6 6个 | 2015 2015年 | 200 200 | 30 30 | 6 6个 |
6 6个 | 2015 2015年 | 200 200 | 30 30 | 7 7 |
6 6个 | 2015 2015年 | 200 200 | 3 3个 | 5 5个 |
6 6个 | 2015 2015年 | 200 200 | 3 3个 | 6 6个 |
6 6个 | 2015 2015年 | 200 200 | 3 3个 | 7 7 |
6 6个 | 2015 2015年 | 80 80 | 30 30 | 5 5个 |
6 6个 | 2015 2015年 | 80 80 | 30 30 | 6 6个 |
6 6个 | 2015 2015年 | 80 80 | 30 30 | 7 7 |
6 6个 | 2015 2015年 | 80 80 | 3 3个 | 5 5个 |
6 6个 | 2015 2015年 | 80 80 | 3 3个 | 6 6个 |
6 6个 | 2015 2015年 | 80 80 | 3 3个 | 7 7 |
I will like to turn it to something like this.我想把它变成这样的东西。 Is that possible?那可能吗?
month月 | year年 | PO采购订单 | RO反渗透 | MO莫 |
---|---|---|---|---|
5 5个 | 2013 2013 | 100 100 | 10 10 | 3 3个 |
5 5个 | 2013 2013 | 20 20 | 1 1个 | 4 4个 |
5 5个 | 2013 2013 | 0 0 | 0 0 | 5 5个 |
4 4个 | 2014 2014 | 200 200 | 20 20 | 4 4个 |
4 4个 | 2014 2014 | 30 30 | 2 2个 | 5 5个 |
4 4个 | 2014 2014 | 0 0 | 0 0 | 6 6个 |
6 6个 | 2015 2015年 | 200 200 | 30 30 | 5 5个 |
6 6个 | 2015 2015年 | 80 80 | 3 3个 | 6 6个 |
6 6个 | 2015 2015年 | 0 0 | 0 0 | 7 7 |
Unpivot
acts similar as union
,Use union all
in your case Unpivot
行为类似于union
,在你的情况下使用union all
SELECT month,
year,
po1 AS PO,
ro1 AS RO,
mo1 AS MO
FROM test
UNION ALL
SELECT month,
year,
po2,
ro2,
mo2
FROM test
UNION ALL
SELECT month,
year,
0,
0,
mo2
FROM test
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.