在SQL中组合行

时间:2013-05-16 14:18:05

标签: sql-server sql-server-2008

我有两个查询返回两个不同的结果,一个是返回ex#1返回,第二个返回ex#2,我想结合并想要结果。

EX#1

PartyID    PartyName    TotalMain 
  1            A            1
  2            B            1

EX#2

PartyID    PartyName      TotalSub
  1            A              1
  3            C              1

我想要结果

 PartyID   PartyName       TotalMain             TotalSub
  1           A                 1                    1
  2           B                 1                    0
  3           C                 0                    1       

2 个答案:

答案 0 :(得分:1)

;with sample as 
(
SELECT 
e1.PartyID as partyid
,e1.PartyName as partyname
,e1.totalmain AS TotalMain
,0 AS TotalSub
From table1 e1
UNION ALL
SELECT 
e2.PartyID
,e2.PartyName
,0 AS TotalMain
,e2.totalsub AS TotalSub
From table2 e2
)
SELECT
partyid
,MAX(partyname) as partyname
,MAX(totalmain) as totalmain
,MAX(totalsub) as totalsub
from sample
GROUP BY
partyid

答案 1 :(得分:0)

没有看到你的表和当前的sql,我所能建议的是:

  Select Coalesce(a.PartyId, b.PartyId) partyId, 
       Coalesce(a.PartyName, b.PartyName) partyName, 
       a.TotalMain, b.TotalSub
  From ([Put First Query SQL Inside here]) a
      Full Join ([Put Second Query SQL Inside here]) b
         On a.PartyId = b.PartyId