我正在尝试将行转换为列。请看下面的示例:
colname | data1 | data2
---------|--------|------------------------------------
a | 1 |
a | 2 |
a | 3 |
b | 4 |
b | 5 |
c | | 6
c | | 7
我希望输出为:
a | b | c
---------|--------|------------------------------------
1 | |
2 | |
3 | |
| 4 |
| 5 |
| | 6
| | 7
有人可以分享一下你如何解决这个问题的想法吗?
答案 0 :(得分:2)
这并不是真正将行放到列中。因此,它不是一个需要的PIVOT 您只想在某些列中显示值,具体取决于colname的值 可以使用CASE WHEN。
select
case when colname = 'a' then data1 end as a,
case when colname = 'b' then data1 end as b,
case when colname = 'c' then data2 end as c
from yourtable;