2013-10-28 49 views
1

我有兩個要合併爲一個的查詢。將兩個連接查詢合併爲一個

第一個查詢

select 
    a.desc as desc 
    ,sum(bdd.amount) as amount 
from 
    t_main c 
left outer join 
    t_direct bds on (bds.mainId = c.id) 
left outer join 
    tm_defination a on (a.id = bds.defId) 
where 
    c.descId = 1000000134 
group by 
    a.desc; 

返回以下結果

   desc  amount 
       NW   12.00 
       SW   10 

第二個查詢我

select 
    a.desc as desc 
    ,sum(bdd.newAmt) as amount1 
from 
    t_main c 
left outer join 
    t_newBox b on (b.mainId = c.id) 
left outer join 
    t_transition c on (c.id = b.tranId) 
left outer join 
    tm_defination def a on (a.id = c.defId) 
where 
    c.descId = 1000000134 
group by 
    a.desc; 

該查詢返回結果如下:

  desc amount 
      NW  4.00 

我想,讓我出去把這樣這兩個查詢組合..

   desc amount amount1 
       NW  l2.00 4.00 
       SW  10.00 

我查詢1和查詢2之間試圖UNION但結果出來作爲

  desc amountamount1 
      NW  16.00 
      SW  10.00 

哪不是我想要的。

請讓我知道如何創建一個查詢或表達式來實現這一點。

感謝

+0

請更新您的問題。具體問題是什麼?你到目前爲止嘗試過什麼,爲什麼它沒有工作? – Jeroen

+1

@ jeroen請看看我曾試過什麼,結果如何。 –

+0

請發表你的表格結構和樣本數據,以幫助你。 – Deepshikha

回答

2

而是工會的,你可以使用join。 在這種情況下的代碼將是這樣的:

select coalesce(q1.desc, q2.desc) as desc, 
     q1.amount as amount, q2.amount1 as amount1 
from 
(
    select 
    a.desc as desc 
    ,sum(bdd.amount) as amount 
    from t_main c 
    left outer join t_direct bds on (bds.mainId=c.id) 
    left outer join tm_defination a on (a.id =bds.defId) 
    where c.descId=1000000134 
    group by a.desc 
) q1 
full join 
(
    select 
    a.desc as desc 
    ,sum(bdd.newAmt) as amount1 
    from t_main c 
    left outer join t_newBox b on (b.mainId=c.id) 
    left outer join t_transition c (c.id=b.tranId) 
    left outer join tm_defination def a on (a.id =c.defId) 
    where c.descId=1000000134 
    group by a.desc 
) q2 
    on q1.desc = q2.desc 
order by 1 

因爲用於desc列源極相同的表的使用,聚結可使用的功能。結果查詢將按結果desc列進行排序。

+0

很好地工作。謝謝 –