我需要幫助來解決這個特定的SQL問題,我不能寫存儲特效,因爲我需要將此端口移植到Hive。加入後從另一個表第二最低值
有兩個tQCles Contr和Lvl,我需要左連接它們,並使用前一行的值填充來自LVL的連接tQCle中的空值。 我有樣品tQCles在
Contr
| id | EFF_DT | M_NBR | ACTY_SEQ_NBR | L_CD |
|---------|------------|-------|--------------|------|
| QQFAE46 | 2000-12-24 | 11 | 1 | POT |
| QQFAE46 | 2000-12-24 | 11 | 2 | POT |
| QQFAE46 | 2000-12-24 | 11 | 3 | POT |
| QCC5433 | 2013-04-21 | 00 | 1 | MIC |
| QCC5433 | 2013-04-21 | 00 | 2 | MIC |
| QCC614E | 2015-07-18 | 00 | 1 | MIC |
| QCC614E | 2015-07-18 | 00 | 4 | MIC |
| QC56DDF | 1999-10-01 | 14 | 2 | POT |
| QC56DDF | 1999-10-01 | 14 | 3 | POT |
| QC56DDF | 1999-10-01 | 14 | 4 | POT |
| ACB3DC2 | 1999-10-01 | 14 | 1 | POT |
LVL
| id | EFF_DT | M_NBR | ACTY_SEQ_NBR | OCCR |
|---------|------------|-------|--------------|------|
| QQFAE46 | 2000-12-24 | 11 | 1 | 100 |
| QQFAE46 | 2000-12-24 | 11 | 3 | 100 |
| QCC5433 | 2013-04-21 | 00 | 2 | 200 |
| QCC614E | 2015-07-18 | 00 | 3 | 200 |
| QC56DDF | 1999-10-01 | 14 | 1 | 0 |
LEFT JOIn of Contr and Lvl
| id | EFF_DT | M_NBR | ACTY_SEQ_NBR | L_CD | id | EFF_DT | M_NBR | ACTY_SEQ_NBR | OCCR |
|---------|------------|-------|--------------|------|---------|------------|--------|--------------|--------|
| QQFAE46 | 2000-12-24 | 11 | 1 | POT | QQFAE46 | 2000-12-24 | 11 | 1 | 100 |
| QQFAE46 | 2000-12-24 | 11 | 2 | POT | (null) | (null) | (null) | (null) | (null) |
| QQFAE46 | 2000-12-24 | 11 | 3 | POT | QQFAE46 | 2000-12-24 | 11 | 3 | 100 |
| QCC5433 | 2013-04-21 | 00 | 1 | MIC | (null) | (null) | (null) | (null) | (null) |
| QCC5433 | 2013-04-21 | 00 | 2 | MIC | QCC5433 | 2013-04-21 | 00 | 2 | 200 |
| QCC614E | 2015-07-18 | 00 | 1 | MIC | (null) | (null) | (null) | (null) | (null) |
| QCC614E | 2015-07-18 | 00 | 4 | MIC | (null) | (null) | (null) | (null) | (null) |
| QC56DDF | 1999-10-01 | 14 | 2 | POT | (null) | (null) | (null) | (null) | (null) |
| QC56DDF | 1999-10-01 | 14 | 3 | POT | (null) | (null) | (null) | (null) | (null) |
| QC56DDF | 1999-10-01 | 14 | 4 | POT | (null) | (null) | (null) | (null) | (null) |
| ACB3DC2 | 1999-10-01 | 14 | 1 | POT | (null) | (null) | (null) | (null) | (null) |
現在我需要用值來填充來自拉特tQCle空ACTY_SEQ_NBR值。 該標準從CONTR(即,從已加入的tQCle的列4)中找到對應的ACTY_SEQ_NBR,並從相對於相同id,eff_dt和m_nbr的ACTY_SEQ_NBR小於 的值從LVL中找到ACTY_SEQ_NBR大於或等於來自CONTRACTY_SEQ_NBR的值。
for。例如第2行的空值爲ACTY_SEQ_NBR,其對應的ACT_SEQ_NBR爲2,從LVL小於2的ACTY_SEQ_NBR值爲1.
所以我理想的輸出應該與這一行相同。
| id | EFF_DT | M_NBR | ACTY_SEQ_NBR | L_CD | id | EFF_DT | M_NBR | ACTY_SEQ_NBR | OCCR |
|---------|------------|-------|--------------|------|---------|------------|--------|--------------|--------|
| QQFAE46 | 2000-12-24 | 11 | 1 | POT | QQFAE46 | 2000-12-24 | 11 | 1 | 100 |
| QQFAE46 | 2000-12-24 | 11 | 2 | POT | (null) | (null) | (null) | 1 | (null) |
I tried a lag query but its not giving correct output for all values.
我執行Amniders查詢,我改變了結果得到預期值。 這裏是我的預期值
| ID | EFF_DT | M_NBR | ACTY_SEQ_NBR | L_CD | LVL_ID | LVL_EFF_DT | LVL_M_NBR | LVL_ACTY_SEQ_NBR | OCCR | CALC_LVL_ACTY_SEQ_NBR |
|---------|------------|-------|--------------|------|---------|------------|-----------|------------------|--------|-----------------------|
| QQFAE46 | 2000-12-24 | 11 | 1 | POT | QQFAE46 | 2000-12-24 | 11 | 1 | 100 | 1 |
| QQFAE46 | 2000-12-24 | 11 | 2 | POT | (null) | (null) | (null) | (null) | (null) | 1 |
| QQFAE46 | 2000-12-24 | 11 | 3 | POT | QQFAE46 | 2000-12-24 | 11 | 3 | 100 | 3 |
| QC56DDF | 1999-10-01 | 14 | 2 | POT | (null) | (null) | (null) | (null) | (null) | 1 |
| QC56DDF | 1999-10-01 | 14 | 3 | POT | (null) | (null) | (null) | (null) | (null) | 1 |
| QC56DDF | 1999-10-01 | 14 | 4 | POT | (null) | (null) | (null) | (null) | (null) | 1 |
| QCC5433 | 2013-04-21 | 00 | 1 | MIC | (null) | (null) | (null) | (null) | (null) | -99 |
| QCC5433 | 2013-04-21 | 00 | 2 | MIC | QCC5433 | 2013-04-21 | 00 | 2 | 200 | 2 |
| QCC614E | 2015-07-18 | 00 | 1 | MIC | (null) | (null) | (null) | (null) | (null) | -99 |
| QCC614E | 2015-07-18 | 00 | 4 | MIC | (null) | (null) | (null) | (null) | (null) | 3 |
| ACB3DC2 | 1999-10-01 | 14 | 1 | POT | (null) | (null) | (null) | (null) | (null) | -99 |
任何幫助表示讚賞
感謝您的試用,但查詢無法按預期工作。 MAX不是我需要的,如果LVL表連接的ACTY_SEQ值爲空,請從LVL表中查找小於相應CONTR表的ACTY_SEQ值的ACTY_SEQ值。 – Abhi
我與Amninder--你能提供編輯原始問題的樣本數據,實際演示所有變化(和每個期望的結果)? – KevinKirkpatrick