SQL -交换行和列

我有一个需要交换行和列的情况。是的,我试过使用Pivot和UnPivot,它们没有给我想要的结果。

我的源表:

+-------+------+------+-----+-----+
| month | year | po1  | po2 | po3 |
+-------+------+------+-----+-----+
| Jan   | 2013 |  100 |  20 |  10 |
| Feb   | 2014 | 1100 | 120 | 110 |
+-------+------+------+-----+-----+

我可以做一个静态的旋转

select Description,value from #test
unpivot (value for Description in (year,po1, po2, po3)) unpiv;

这是我能够生成的结果

+-------------+-------+
| Description | value |
+-------------+-------+
| year        |  2013 |
| po1         |   100 |
| po2         |    20 |
| po3         |    10 |
| year        | 12013 |
| po1         |  1100 |
| po2         |   120 |
| po3         |   110 |
+-------------+-------+

预期输出:

+------+------+------+
| Desc | Jan  | Feb  |
+------+------+------+
| year | 2013 | 2014 |
| po1  |  100 | 1100 |
| po2  |   20 |  120 |
| po3  |   10 |  110 |
+------+------+------+

此外,行/列会不断变化,有没有办法让它变得动态?

转载请注明出处:http://www.dlaisen.com/article/20230526/2255733.html