我正在尝试使用 a 将多个表连接在一起full outer join
,它接近正确的结果,但由于连接子句存在一些重复的行。我有几个表,其中包含 id、date、value 列。我正在寻找一个表,其中每个 id、日期对都有一行,其中包含每个表中的所有值。
这是我到目前为止所得到的:
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
有没有办法将这些行展平/合并在一起,或者有没有更好的方法来解决这个问题?