【发布时间】:2020-10-23 01:27:41
【问题描述】:
我有几个复杂的表格。但他们的映射是这样的:
TABLE_A:
_________________________________
| LINK_ID | TYPE_ID |
_________________________________
| adfasdnf23454 | TYPE 1 |
| 43fsdfsdcxsh7 | TYPE 1 |
| dfkng037sdfbd | TYPE 1 |
| sd09734fdfhsf | TYPE 2 |
| khsadf94u5dfc | TYPE 2 |
| piukvih66wfa8 | TYPE 3 |
_________________________________
TABLE_B:
_____________________________________________
| LINK_ID | CODE_ID | CODE_VALUE |
_____________________________________________
| adfasdnf23454 | 7 | test 1 |
| fgubk65esdfj7 | 6 | test 2 |
| ooogfsg354fds | 7 | test 3 |
| sd09734fdfhsf | 5 | test 4 |
_____________________________________________
LINK_ID 列链接这两个表。
我的要求是让 TABLE_A 中的所有记录检查它们是否具有特定的 CODE_ID。
- 如果记录的 CODE_ID 为 7 - 在列中填充 CODE_VALUE。
- 如果记录的 CODE_ID 为 6 - 在另一列中填充 CODE_VALUE。
- 如果记录没有 CODE_ID,则将 CODE_VALUE 显示为 null。
关键是,TABLE_B 可能有 TABLE_A 没有的记录。但最终结果应该只包含TABLE_A的记录。
PS:不建议使用 SWITCH CASE,因为我需要同一行中的字段。 (请在使用 SWITCH CASE 时查看 OBTAINED RESULT 中相同 LINK_ID 的多行)
获得的结果:
_______________________________________________
| LINK_ID | CODE_VALUE_1 | CODE_VALUE_1 |
_______________________________________________
| adfasdnf23454 | test 1 | null |
| adfasdnf23454 | null | test 4 |
| sd09734fdfhsf | test 6 | null |
_______________________________________________
预期结果:
__________________________________________________
| LINK_ID | CODE_VALUE_1 | CODE_VALUE_2 |
__________________________________________________
| adfasdnf23454 | test 1 | test 4 |
| 43fsdfsdcxsh7 | null | null |
| dfkng037sdfbd | null | null |
| sd09734fdfhsf | test 6 | null |
| khsadf94u5dfc | null | null |
| piukvih66wfa8 | null | null |
__________________________________________________
有人可以帮忙吗?
【问题讨论】:
标签: sql oracle join select oracle12c