【发布时间】:2021-07-03 03:32:09
【问题描述】:
我正在尝试通过使用唯一键连接两个表来获得结果。
主题表
| KEY | OCCURS | Value |
|---|---|---|
| YMPRQ72 | 1 | 21 |
| YMPRQJX | 1 | 7 |
消费者表
| KEY | TYPE | ITEM_ID | AMT |
|---|---|---|---|
| YMPRQJX | No Charge | 1106 | 0 |
| YMPRQ72 | Deluxe | 20883 | 40 |
| YMPRQJX | Basic | 20889 | 20 |
| YMPRQ72 | No Charge | 1106 | 0 |
结果
| KEY | TYPE | ITEM_ID | AMT | OCCURS | VALUE |
|---|---|---|---|---|---|
| YMPRQJX | No Charge | 1106 | 0 | 1 | 7 |
| YMPRQ72 | Deluxe | 20883 | 40 | 1 | 21 |
| YMPRQJX | Basic | 20889 | 20 | 1 | 7 |
| YMPRQ72 | No Charge | 1106 | 0 | 1 | 21 |
您可以在结果中看到每个Key OCCURS 应该只出现一次,Value 也是如此。由于两个唯一值,我希望将 Subjects 总数设为 2,但唯一值与 TYPE 中的多个值匹配。
期望/预期结果
| KEY | TYPE | ITEM_ID | AMT | OCCURS | VALUE |
|---|---|---|---|---|---|
| YMPRQJX | No Charge | 1106 | 0 | - | - |
| YMPRQ72 | Deluxe | 20883 | 40 | 1 | 21 |
| YMPRQJX | Basic | 20889 | 20 | - | - |
| YMPRQ72 | No Charge | 1106 | 0 | 1 | 21 |
我用于 ORACLE 数据库的代码是:
SELECT c.KEY, c.TYPE, c.ITEM_ID, c.AMT, s.OCCURS, s.VALUE
FROM CONSUMER c LEFT JOIN SUBJECT s ON c.KEY = s.KEY
【问题讨论】:
-
如何选择哪些行获取值?