2016-04-21 2 views
1

Ich habe eine Tabelle (Tabelle A) mit 3 Spalten (ColA, ColB, COLC)Wählen Sie bekommen 3 Reihen von Daten zu 3 verschiedene Spalten

ColA und ColB sind Primärschlüssel

select * 
from TableA 
where ColA = '001'; 

gibt mir diese

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

ich brauche dieses Ergebnis in diesem Format

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

, d. H. Alle resultierenden Zeilen in einer Spalte zu verschiedenen entsprechenden Spalten.

+0

PIVOT ist, was Sie für :) .. https://oracle-base.com/articles/11g/pivot suchen -und-unpivot-operators-11gr1 – William

+0

Suche nach 'pivot' – HoneyBadger

+2

Mögliches Duplikat von [Oracle pivot operator] (http://stackoverflow.com/questions/19280591/oracle-pivot-operator) –

Antwort

2

Und die PIVOT Version:

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

Versuchen Sie, diese

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 
Verwandte Themen