を使用して複数のテーブルを結合しようとしてfull outer join
いますが、適切な結果に近づいていますが、結合句のために重複する行がいくつかあります。ID、日付、値の列を持つテーブルがいくつかあります。各テーブルのすべての値を持つ、各 ID、日付のペアに対して 1 つの行を持つテーブルを取得しようとしています。
試してみたい場合は、ここに SQLFiddle があります。
ここに私がこれまでに持っているものがあります:
SELECT
COALESCE(T1.ID, T2.ID, T3.ID, t4.id) AS ID,
COALESCE(T1.event_dt, T2.event_dt, T3.event_dt, t4.event_dt) AS DATE,
T1.AMT1, T2.AMT2, T3.AMT3, t4.AMT4
FROM T1
FULL OUTER JOIN T2
ON
T2.id = T1.id
AND T2.event_dt = T1.event_dt
FULL OUTER JOIN T3
ON
T3.id = T1.id
AND T3.event_dt = T1.event_dt
FULL OUTER JOIN T4
ON
T4.id = T1.id
AND T4.event_dt = T1.event_dt
ORDER BY ID, DATE
これはほとんど機能しますが、たとえば T4 に T1 にない ID,event_dt ペアがある場合、いくつかの重複した行が取得されます (これが私が参加しているため、当然のことです)。たとえば、次のようなものが得られます。
1 April, 06 2012 00:00:00+0000 (null) 2 (null) (null)
1 April, 06 2012 00:00:00+0000 (null) (null) (null) 4
1 April, 06 2012 00:00:00+0000 (null) (null) 3 (null)
When I'm looking to get:
1 April, 06 2012 00:00:00+0000 (null) 2 3 4
これらの行を一緒にフラット化/マージする方法はありますか、またはこれを完全に行うためのより良い方法はありますか?