问题描述
我有两个如下表。 TABLEA和表TABLEB。我们对TRANS_ID进行外部联接并比较两个表。
我想要得到结果,如结果所示。我们仅在TABLEA中(即,基于TABLEA.TRANS_ID)检查重复项。
TABLEA
+------+----------+-------+--+-------------+
| UUID | TRANS_ID | NAME | | PHONENUMBER |
+------+----------+-------+--+-------------+
| 123 | 7928 | SCOTT | | 87482837849 |
| 123 | 7928 | SCOTT | | 87482837849 |
| 489 | 7493 | TOM | | 79274778397 |
| 827 | 7920 | DAVID | | 23794928749 |
| 324 | 8472 | PAT | | 87927478839 |
+------+----------+-------+--+-------------+
TABLEB
+----------+----------+--------+-------------+
| BATCH_ID | TRANS_ID | SENDER | PHONENUMBER |
+----------+----------+--------+-------------+
| 823784 | 7438 | LSK | 84748394092 |
| 793847 | 7493 | KLI | 79274778397 |
| 748738 | 7920 | ISL | 74892890487 |
+----------+----------+--------+-------------+
RESULT
+----------+-------------+-------------------------+
| TRANS_ID | PHONENUMBER | STATUS |
+----------+-------------+-------------------------+
| 7928 | 87482837849 | DUPLICATE RECORD |
| 7928 | 87482837849 | NOT IN TABLEB |
| 7438 | 84748394092 | NOT IN TABLEA |
| 7920 | 23794928749 | PHONENUMBER MISMATCH |
| 8472 | 87927478839 | NOT IN TABLEB |
+----------+-------------+-------------------------+
我尝试使用以下情况的when语句。除了提取重复项外,我涵盖了所有情况。如果表A中有重复记录,而表B中不存在重复记录,则第一个记录应为“ NOT IN TABLEB”,随后的记录应为“ DUPLICATE RECORD”
CASE
WHEN TABLEA.TRANS_ID is null THEN 'NOT IN TABLEA'
WHEN TABLEB.TRANS_ID is null THEN 'NOT IN TABLEB'
WHEN decode(TABLEA.PHONENUMBER,ALRAJHI_TABLEB.PHONENUMBER,1,0)=0 THEN 'PHONENUMBER MISMATCH'
END
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)