2016-05-11 5 views
0

Ich habe 4 verschiedene Auswahlstatements, die die Ergebnisse zusammenführen und die Befehle wie folgt anzeigen.Abfrage der Vereinigungsverbindung in mehrere Spalten zurückgeben

lab_orders    MED111 
lab_orders    MED262383 
mg_orders    MED262383 
mg_orders    UNT222 
pcg_pharmacogenetics MED262371 
pcg_pharmacogenetics UNT248234 
well_wellness   UST601061 
well_wellness   UNTAccession 
well_wellness   UST333 

Verwenden Sie diese Abfrage.

select 'mg_orders',csv as csv1 
from (select csv from csvdata where csv not in(select orderid from mg_orders)) as t1 
union 
select 'lab_orders',csv as csv2 
from (select csv from csvdata where csv not in(select orderid from lab_orders)) as t2 
union 
select 'pcg_pharmacogenetics',csv as csv3 
from (select csv from csvdata where csv not in(select orderid from pcg_pharmacogenetics)) as t3 
union 
select 'well_wellness',csv as csv4 
from (select csv from csvdata where csv not in(select orderid from well_wellness)) as t4 

Was ich tun möchte, um das Ergebnis in separaten Spalten gesetzt ist zurückzukehren, habe ich versucht, die folgenden aber „keine Spalte namens csv2“

select csv1, csv2, csv3, csv4 
from(
select 'mg_orders',csv as csv1 
from (select csv from csvdata where csv not in(select orderid from mg_orders)) as t1 
union 
select 'lab_orders',csv as csv2 
from (select csv from csvdata where csv not in(select orderid from lab_orders)) as t2 
union 
select 'pcg_pharmacogenetics',csv as csv3 
from (select csv from csvdata where csv not in(select orderid from pcg_pharmacogenetics)) as t3 
union 
select 'well_wellness',csv as csv4 
from (select csv from csvdata where csv not in(select orderid from well_wellness)) as t4 
) as t 


    lab_orders  mg_orders  pcg_pharmacogenetics    
    MED111   MED262383  MED262371 
    MED262383  UNT222  UNT248234 
+0

suchen Es ist mir nicht klar, was Sie die Ergebnismenge wollen würde so aussehen. –

+0

Ich fügte hinzu, was ich will, dass die Ergebnisse unten aussehen. – user2168066

+0

was ist mit well_wellness passiert. –

Antwort

1

bekommen Wenn Sie union verwenden, die Spalten- Namen oder Aliase aus der ersten Abfrage würden für die Ergebnismenge verwendet werden. In Ihrem Fall würde die Ergebnismenge mg_orders und csv1 als Spaltenüberschriften enthalten.

Ich nehme an, Sie sind für eine Abfrage ähnlich wie

select 
max(case when csv not in(select orderid from mg_orders) then csv end) as csv1, 
max(case when csv not in(select orderid from lab_orders) then csv end) as csv2, 
max(case when csv not in(select orderid from pcg_pharmacogenetics) then csv end) as csv3, 
max(case when csv not in(select orderid from well_wellness) then csv end) as csv4 
from csvdata 
+0

Könnte ich also die Spalten aus den anderen Resultsets in der ersten Abfrage aliasieren? – user2168066

+0

Dies funktioniert, musste die 'max' herausnehmen, um alle Datensätze anzuzeigen. Vielen Dank – user2168066

Verwandte Themen