sql - Oracle SQL Self-Join:如何包含缺失的记录
问题描述
即使没有记录,我也想显示名称和计划。我试图在这个上使用自我加入,但没有运气:(
脚本:
SELECT DISTINCT A.NAME , B.PLAN
FROM PLAYER A
LEFT JOIN PLAYER B
ON A.NAME = B.NAME
WHERE A.NAME IN ( 'BOGGIE', 'STEPH')
AND B.PLAN IN ('PLAN200' , 'PLAN999');
当前结果
NAME PLAN
BOOGIE PLAN200
STEPH PLAN200
预期结果
NAME PLAN
BOOGIE PLAN200
BOOGIE
STEPH PLAN200
STEPH
桌子
NAME PLAN AMOUNT CONTRACT
BOGGIE PLAN200 200 24
STEPH PLAN200 200 24
解决方案
您可以尝试使用将您的其他条件放入ON clause
SELECT DISTINCT A.NAME , B.PLAN
FROM PLAYER A
LEFT JOIN PLAYER B
ON A.NAME = B.NAME
and A.NAME IN ( 'BOGGIE', 'STEPH')
AND B.PLAN IN ('PLAN200' , 'PLAN999');