选择将3行数据添加到3个不同的列

时间:2016-04-21 07:16:51

标签: sql oracle

我有一个表(TableA),有3列(ColA,ColB,ColC)

ColA和ColB是主键

select *
from TableA
where ColA = '001';

给了我这个

COLA COLB      COLC 
---- ----- -------- 
001  AA1        460  
001  AB1        380 
001  AC1        950  

我需要这种格式的结果

COLA         AA1          AB1         AC1
-----------  -----------  ----------- ----------- 
001          460          380         950

,即将所有结果行分成一列到不同的对应列。

2 个答案:

答案 0 :(得分:2)

PIVOT版本:

SELECT *
FROM 
(
    SELECT 
        *
    FROM 
        TableA
    WHERE ColA = '001'
)
PIVOT
(
    MAX(ColC)
    FOR ColB IN ('AA1','AB1','AC1')
 )

答案 1 :(得分:1)

试试这个

select 
COLA, 
max(case when COLB='AA1' then COLC end) as AA1
max(case when COLB='AB1' then COLC end) as AB1
max(case when COLB='AC1' then COLC end) as AC1
from table
group by COLA