2016-05-11 55 views
0

我有4个不同的选择状态,它们将结果联合起来并像这样显示订单。将联合查询返回到多列

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 

使用此查询。

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 

我想要做的是返回结果在单独的列设置,我曾尝试以下,但得到“没有指定的列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

你想要的结果集看起来像这不是很清楚,我的查询。 –

+0

我添加了我想要的结果,看起来像在底部。 – user2168066

+0

well_wellness发生了什么事。 –

回答

1

当您使用union,该列 - 第一个查询的名称或别名将用于结果集。在你的情况下,结果集将包含mg_orderscsv1作为列标题。

我假定你正在寻找类似的

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

那么我可以在第一个查询中别名从其他结果集的列吗? – user2168066

+0

这工作,必须拿出'最大'来显示所有的记录。谢谢 – user2168066