带有空列的Oracle连接表
我想加入4个表,例如在下面的代码中。其中IIN是主要钥匙。但是,如果一张表中存在IIN DOENST,则我的代码的结果将为null。
SELECT
COALESCE(D.TERRORIST, 0) as TERRORIST,
COALESCE(D.SPECIAL,0) as SPECIAL,
COALESCE(T.SIGN_INACTIVE, 0) as TAXPAYER,
COALESCE(B.ANOTHER, 0) as OSB,
COALESCE(B.LSBOO,0) as LSBOO,
COALESCE(R.DELAY,0) as DELAY
FROM RBPM.LIST_CL_DWHFM D
JOIN RBPM.LIST_CL_TAXPAYER T
ON D.IIN = T.IIN
JOIN RBPM.LIST_CL_BLACK B
ON T.IIN = B.IIN
JOIN RBPM.LIST_CL_RBO R
ON B.IIN = R.IIN
WHERE 1=1
AND D.IIN = '123456789123'
For example:
Table RBPM.LIST_CL_DWHFM
IIN | TERRORIST | SPECIAL |
---|---|---|
null | null | null |
Table RBPM.LIST_CL_TAXPAYER
IIN | TAXPAYER |
---|---|
'123456789123' | 0 |
Table RBPM.LIST_CL_BLACK
IIN | OSB | LSBOO |
---|---|---|
'123456789123' | 0 | 1 |
Table RBPM.LIST_CL_RBO
IIN | DELAY |
---|---|
'123456789123' | 0 |
Expecting:
TERRORIST | SPECIAL | TAXPAYER | OSB | LSBOO | 延迟 |
---|---|---|---|---|---|
null | Null | 0 | 0 | 1 | 0 |
结果:
恐怖 | 特殊 | 纳税人 | OSB | LSBOO | 延迟 |
---|---|---|---|---|---|
null | null | null | null | null | null null null null null null null null |
I want to join 4 tables, like in a code below. Where IIN is primary key. But if IIN doenst exist in one table, my code's result will be null.
SELECT
COALESCE(D.TERRORIST, 0) as TERRORIST,
COALESCE(D.SPECIAL,0) as SPECIAL,
COALESCE(T.SIGN_INACTIVE, 0) as TAXPAYER,
COALESCE(B.ANOTHER, 0) as OSB,
COALESCE(B.LSBOO,0) as LSBOO,
COALESCE(R.DELAY,0) as DELAY
FROM RBPM.LIST_CL_DWHFM D
JOIN RBPM.LIST_CL_TAXPAYER T
ON D.IIN = T.IIN
JOIN RBPM.LIST_CL_BLACK B
ON T.IIN = B.IIN
JOIN RBPM.LIST_CL_RBO R
ON B.IIN = R.IIN
WHERE 1=1
AND D.IIN = '123456789123'
For example:
Table RBPM.LIST_CL_DWHFM
IIN | TERRORIST | SPECIAL |
---|---|---|
null | null | null |
Table RBPM.LIST_CL_TAXPAYER
IIN | TAXPAYER |
---|---|
'123456789123' | 0 |
Table RBPM.LIST_CL_BLACK
IIN | OSB | LSBOO |
---|---|---|
'123456789123' | 0 | 1 |
Table RBPM.LIST_CL_RBO
IIN | DELAY |
---|---|
'123456789123' | 0 |
Expecting:
TERRORIST | SPECIAL | TAXPAYER | OSB | LSBOO | DELAY |
---|---|---|---|---|---|
null | null | 0 | 0 | 1 | 0 |
Result:
TERRORIST | SPECIAL | TAXPAYER | OSB | LSBOO | DELAY |
---|---|---|---|---|---|
null | null | null | null | null | null |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果任何表格可能的空IIN iin,您可以构建所有IIN的列表并将其加入到它上(尽管最好至少拥有一个具有所有IIN的表):
您也可以完全加入所有内容,将凝聚/多层次或在哪里放置。我将其中的1 = 1留在一个假设上,即您在编程中串联了其他子句。 请将其删除,您可以:
如果您只想查询一个IIN,
If any table might have a null IIN you can build a list of all the IINs and left join onto it, (though it would be better to have at least one table that has all the IINs):
You could also full outer join everything and put a coalesce/multiple or in the where. I left the WHERE 1=1 in on the assumption that you're programmatically concatenating other clauses on; if you arent, remove it
If you're only ever going to query one IIN you can:
现在,它可以与空列一起使用,
谢谢Caius Jard
NOW IT WORKS WELL WITH NULL COLUMNS,
thanks Caius Jard