ein

2016-04-17 12 views
0

Ich habe Tisch wieein

 

Tabel data 
+-------+-------+ 
| name1 | name2 | 
+-------+-------+ 
| AA | XX | 
| BB | YY | 
| CC | ZZ | 
+-------+-------+ 

und ich möchte die Ausgabe wie

 
Edit 
+-------+ 
| name1 | 
+-------+ 
| AA | 
| XX | 
| BB | 
| YY | 
| CC | 
| ZZ | 
+-------+ 

kann u bitte leite mich abzufragen, diese Aufgabe zu erhalten

Antwort

2

Sie verwenden können UNION ALL oder UNION. UNION erstellt einen DISTINCT Ergebnissatz. Wenn Sie nicht möchten, können Sie UNION ALL verwenden, die einfach die Daten

SELECT NAME1 as NAME FROM YOUR_TABLE 
UNION 
SELECT NAME2 FROM YOUR_TABLE 
ORDER BY NAME 

EDIT concat wird: Für Ihre aktualisierten Anforderungen

with my_data(name1,name2) as 
(
    select 'AA','XX' from dual 
    union 
    select 'BB','YY' from dual 
    union 
    select 'CC','ZZ' from dual 
), 
indexed_my_data(name1,name2,row_sequence) as 
(
    select name1,name2, row_number() over (order by null) from my_data 
) 
select name1,row_sequence,'A' as col_sequence from indexed_my_data 
union all 
select name2,row_sequence,'B' from indexed_my_data 
ORDER BY row_sequence,col_sequence; 
+0

Danke, Sie sind so hilfreich –

+0

eine Frage , siehe meine Bearbeitung in der Ausgabe –

+0

@RakaWidjaya Dazu müssen Sie mit analytischen Funktionen gehen. Erzeugen Sie für jede Zeile eine Sequenznummer, um die Reihenfolge und auch eine Spaltenfolge zu erhalten. –