Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将两个连接查询合并为一个查询_Sql_Sql Server - Fatal编程技术网

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请查看我尝试了什么以及结果如何。请发布表格结构和示例数据以帮助您解决问题。。