表T1:差異加入
person | visit | code_num1 | code_desc1
1 1 100 OTD
1 2 101 SED
2 3 102 CHM
3 4 103 OTD
3 4 103 OTD
4 5 101 SED
表T2:
person | visit | code_num2 | code_desc2
1 1 104 DME
1 6 104 DME
3 4 103 OTD
3 4 103 OTD
3 7 103 OTD
4 5 104 DME
我有合併的人,並參觀了兩個表t1和t2以下SAS代碼:
DATA t3;
MERGE t1 t2;
BY person visit;
RUN;
哪產生以下輸出:
person | visit | code_num1 | code_desc1 |code_num2 | code_desc2
1 1 100 OTD 104 DME
1 2 101 SED
1 6 104 DME
2 3 102 CHM
3 4 103 OTD 103 OTD
3 4 103 OTD 103 OTD
3 7 103 OTD
4 5 101 SED 104 DME
我想在一個蜂巢查詢複製本,並使用全外嘗試加入:
其中產量表:
person | visit | code_num1 | code_desc1 |code_num2 | code_desc2
1 1 100 OTD 104 DME
1 2 101 SED null null
1 6 null null 104 DME
2 3 102 CHM null null
3 4 103 OTD 103 OTD
3 4 103 OTD 103 OTD
3 4 103 OTD 103 OTD
3 4 103 OTD 103 OTD
3 7 null null 103 OTD
4 5 101 SED 104 DME
這幾乎是一樣的SAS,但我們有2個額外的行(人= 3,訪問= 4)。我認爲這是因爲配置單元將一個表中的每一行與另一個表中的兩行相匹配,在t3中產生4行,而SAS不會。關於如何讓我的查詢匹配SAS合併輸出的任何建議?
如果有幫助,SAS的做法是,如果將左表和右表限制爲僅共享一個公用鍵值的特定行集(例如,每個表上有兩個3-4行),然後它每次往下走一行 - 所以A.r1 = B.r1和A.r2 = B.r2 - 然後如果一個表用完行,保留最後一行,那麼有效A.r3 = B.r2 A.r4 = B.r2等,如果A有更多的3-4行。 – Joe
另外 - HiveQL沒有Coalesce功能嗎?業務似乎比所有情況都容易。 – Joe
這確實有助於我理解更好的情況。另外,合併的好主意。 @Joe – Danzo