2016-11-28 80 views
0

我有兩個表: 表ASQL Server 2008中聯盟

ID Date  Answer 
1 1/1/16  

表B

ID Date  Answer 
1  1/1/16  Yes 

查詢:

SELECT * FROM A 
UNION 
SELECT * FROM B 

輸出:

Id Date  Answer 
1 1/1/16  Yes 
1 1/1/16  

我想看到的是

Id Date  Answer 
1 1/1/16  Yes 

合併空白。本質上,我想計算何時一個客戶(pk)在該日期回答一個問題。所以我想要每個ID和一個唯一的行。

回答

0

也許一個完全外連接與Coalesce會是一個更好的選擇?

SELECT coalesce(t1.id, t2.id), coalesce(t1.date,t2.date), coalesce(t1.answer, t2.answer) 
FROM tableA t1 FULL OUTER JOIN tableb t2 
    ON t1.id = t2.id AND t1.date = t2.date 

你也可以包裹你的工會在一個子查詢,並採取max(Answer)上進行分組IDDate。我不確定哪個會更經濟。

0

我已經使用子查詢。

SELECT [ID] 
     ,[Date] 
     ,MAX([Answer]) as Answer 
FROM 
    (SELECT * FROM TableA 
    UNION 
    SELECT * FROM TableB) AS X 
GROUP BY [ID],[Date]