我們有6個與樣品(例如)蜂巢表結構像 (其中每個表都有上百萬的商人記錄)蜂巢連接多個表以創建水平佈局
Table1
MerchntId ,field1, field2
Table2
MerchantId, field3,field4
Table3
MerchantId, field5,field6,field7
Table4
MerchantId, field8,field9,field10
Table5
MerchantId, field11, field12, field13
等
要求是創建水平佈局,以獲取至少一個字段對商戶有價值的所有獨特商家商戶可能會或可能不會出現在其他表中(對於商家,可能有其他表中的記錄或可能不是那裏)
決賽 MerchntId,FIELD1,FIELD2,字段3,字段4,
字段5,字段6,字段7,字段8,字段9,字段10,field11,field12,field13
輸出應該像接合後
i) 101 abc def ghi
ii) 102 ghj fert hyu ioj khhh jjh ddd aas fff kkk fff vvv ff
對於情況(ⅰ)僅三個字段具有用於情況值 (ii)所有字段具有值
爲此,我們正在做的FULL OUTER上MERCHANTID JOIN的兩個表等,然後創建最終表
有沒有什麼更好的方法這樣做呢?
例如, 我目前的做法
SELECT distinct
(case when a.MerchntId IS NOT NULL then a.MerchntId else (case when
b.MerchntId IS NOT NULL
then b.MerchntId else '' end) end) as MerchntId,
(case when a.field1 IS NOT NULL then a.field1 else '' end) as field1,
(case when a.field2 IS NOT NULL then a.field2 else '' end) as field2,
(case when b.field3 IS NOT NULL then b.field3 else '' end) as field3,
(case when b.field4 IS NOT NULL then b.field4 else '' end) as field4
from Table1 a
full outer join Table2 b
ON a.MerchntId = c.MerchntId;
完全外部聯接表3和表4 然後全外連接這兩個表中創建一個決賽桌