Sql 将两个连接查询合并为一个查询
我想将两个查询合并为一个查询 第一个问题是Sql 将两个连接查询合并为一个查询,sql,sql-server,Sql,Sql Server,我想将两个查询合并为一个查询 第一个问题是 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 grou
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
这不是我想要的
请让我知道如何创建查询或表达式来实现这一点
谢谢,您可以使用“加入”而不是“联合”。 在这种情况下,您的代码如下所示:
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
列源的表用法相同,因此可以使用coalesce函数。结果查询将按结果desc
列排序。请更新您的问题。具体问题是什么?到目前为止,您尝试了什么,为什么没有成功?@jeroen请查看我尝试了什么以及结果如何。请发布表格结构和示例数据以帮助您解决问题。。