首页 > 解决方案 > 如何将 2 列旋转为 1 行,第 1 行作为列标签,第 2 行作为值

问题描述

我有 2 列数据,布局如下:

-------------
|Name|Count |
-------------
|Val1|Val1_2|
|Val2|Val2_2|
|Val3|Val3_2|
|Val4|Val4_2|
|Val5|Val5_2|

但是我不确定如何使用 pivot 函数,让它看起来像这样:

------------------------------------
|Val1  |Val2  |Val3  |Val4  |Val5  |
------------------------------------
|Val1_2|Val2_2|Val3_2|Val4_2|Val5_2|

我知道必须使用某种聚合函数,但是我希望 val1_2 等保持不变。

有任何想法吗?我认为这可能很简单,但我不能完全掌握它。

标签: oraclepivotpivot-table

解决方案


如果您只有 5 列,则可以使用假聚合函数和案例

      select  min(case when  Name ='Val1' then count end ) Val1
       , min(case when  Name ='Val2' then count end ) Val2
       , min(case when  Name ='Val3' then count end ) Val3
       , min(case when  Name ='Val4' then count end ) Val4
       , min(case when  Name ='Val5' then count end ) Val5 
     from my_table  

推荐阅读