我是Hive的新手,我的SQL知識有點生疏,因此在SO上發佈了問題。Hive:填寫缺失的列
我有一個SAP列表中缺少一列值的數據。我想知道如何填充這些列。
實施例:
+----------+-----------+--------+
| EBELN | BELNR | EBELP |
|----------+-----------+--------|
| 1 | 123 | 001 |
|----------+-----------+--------|
| | 123 | 002 |
|----------+-----------+--------|
| | 123 | 003 |
+----------+-----------+--------+
在上述表中,所有的三排彼此相關的,但值EBELN
列只存在於第一行。
當我使用EBELN
列作爲連接鍵將此表與其他表連接起來時,只有第一行出現在連接中。我希望將所有三行都放在輸出連接中。
Expected output:
+----------+-----------+--------+
| EBELN | BELNR | EBELP |
|----------+-----------+--------|
| 1 | 123 | 001 |
|----------+-----------+--------|
| 1 | 123 | 002 |
|----------+-----------+--------|
| 1 | 123 | 003 |
+----------+-----------+--------+
我期待輸出是這樣的,這樣我可以通過使用EBELN
列加入這個表與其他表。
我加入的表不包含BELNR
或EBELP
列,因此我無法使用這些列進行連接。
我想知道如果我可以使用self join
或有什麼我可以在這裏使用的。
添加更多信息。我有其他表讓我們稱之爲「ABCD」。該表有EBELN
列。
+----------+-----------+--------+
| EBELN | COL12 | COL13 |
|----------+-----------+--------|
| 1 | ABC | LMN |
|----------+-----------+--------|
| 2 | DEF | OPQ |
|----------+-----------+--------|
| 3 | GHI | RST |
+----------+-----------+--------+
我試圖加入這個「ABCD」表使用EBELN
列「EKPF」表。
我需要得到所有的行,其中BELNR
號碼是相同的,但因爲BELNR
列不存在於ABCD
表中,我不能用它來加入。
最終加盟輸出應該像
+----------+-----------+--------+--------+--------+
| EBELN | BELNR | EBELP | COL12 | COL13 |
|----------+-----------+--------+--------+--------|
| 1 | 123 | 001 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| | 123 | 002 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| | 123 | 003 | ABC | LMN |
|----------+-----------+--------+--------+--------|
| 2 | | | DEF | OPQ |
|----------+-----------+--------+--------+--------|
| 3 | | | GHI | RST |
+----------+-----------+--------+--------+--------+
如何行相關?通過BELNR專欄?應如何計算EBELN列? – leftjoin
您可以使用自聯接或其他方法進行EBELN計算,但需要先定義規則。 – leftjoin
嗨,感謝您寶貴的時間。我已經更新了問題的細節,以反映我打算做的事情。 – Shekhar