我有一张table申请人:
| ID|接收|
| --|--|
| 1 |食品|
| 1 |租金援助|
| 1 |汽车票|
| 2 |食品|
| 2 |租金援助|
| 3 |食品|
| 4 |汽车票|
| 5 |null|
正如你所看到的,我有一个申请人表,申请人已经收到了不同数量的好处。但现在我需要检查这个候选人表,并确保所有申请人都得到所有3个好处:食物房租补助还有车票申请人也不能两次获得这种福利。如何在Oracle SQL中实现这一点?
注意:我有Benefits表,其中的benefitsMap到唯一的id(food = 100,rent assistance = 101,bus ticket = 102)。为了可读性,我写了名字而不是数字。
我看了各种声明,如合并和存在,但不能看到这将如何适用于我的情况。
1条答案
按热度按时间deikduxw1#
可以使用
MERGE
语句和PARTITION
艾德edOUTER JOIN
:其中,对于样本数据:
然后,在
MERGE
之后,该表包含:| PID|接收|
| --|--|
| 1 |食品|
| 1 |租金援助|
| 1 |汽车票|
| 2 |食品|
| 2 |租金援助|
| 3 |食品|
| 4 |汽车票|
| 5 |(空值)|
| 2 |汽车票|
| 3 |汽车票|
| 3 |租金援助|
| 4 |食品|
| 4 |租金援助|
| 5 |汽车票|
| 5 |食品|
| 5 |租金援助|
提琴