1
有人可以幫助我使用這些條件使SQL(ORACLE)查詢更靈活嗎?如何僅使用JOIN顯示匹配的項目
有2個表:
表1
CodeA Year
1112-999 2017
1113-999 2017
表2
CodeB Year
1114-111 2017
1115-111 2018
然後運行該腳本
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');
在這種情況下,結果是:
CodeA CodeB
1112-999 1114-111
但在這種情況下,它需要顯示只有第一個值和另一列應該是正在運行的腳本後空。
例如,
CodeA CodeB
1112-999 NULL
但是,如果列 「CodeB」(表2)含有值= 1112-534,則該值應在運行相同的腳本
對於後出現例如,
表1
CodeA Year
1112-999 2017
1113-999 2017
表2
CodeB Year
1114-111 2017
1112-534 2017
1115-111 2018
並運行相同的腳本後,結果應該是:
CodeA CodeB
1112-999 1112-534
我應該在這個腳本,以便改變根據表格中的輸入數據使其變得靈活(通用)?我的意思是,當表2中不包含的預期值(在這種情況下1112-534),然後將結果(第2列)應爲NULL:
CodeA CodeB
1112-999 NULL
,並在表2中包含這個值( 1112-534),則反應應該是:
CodeA CodeB
1112-999 1112-534
這裏是劇本我已經和要使它更加靈活:
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');
請幫我)))提前致謝。
請粘貼來自SQL * plus的純文本,而不是粘貼在stackoverflow上的HTML。簡單的'DESCRIBE table'輸出將比您發佈的
回答
您可能會發現它的幫助,查看過濾前加入的結果:
你的英語語言規範不是很清楚,但會暗示你想要NULL過濾:
另請參閱https://en.wikipedia.org/wiki/Join_(SQL)
來源
2017-08-12 15:39:32
剛編輯它。對不起,這麼醜陋的描述。我的第一個問題使用表格。我認爲這張表會自動編輯。我也更新了描述。你能否再次審查一下。我試圖更清楚地表達我的想法))) – Vladimir
請查看已記錄的JOIN變體,特別是https://en.wikipedia.org/wiki/Join_(SQL)#Outer_join左外連接,然後查看您的JOIN沒有WHERE子句的正則表達式過濾。發佈看起來有希望的任何JOIN結果。首先,您需要確定適當的JOIN關係,然後才能將其過濾到相關的行。 –
謝謝。我認爲左外連接將解決我的問題。 – Vladimir
相關問題