我有一个包含以下列的视图:
OLD_RUN_ID | NEW_RUN_ID | IND_ID | OLD_VALUE | NEW_VALUE
此视图包含NEW_RUN_ID = 260
的条目,并且没有OLD_RUN_ID = 257
的条目。
是否存在类似的问题:
OLD_RUN_ID | NEW_RUN_ID | IND_ID | OLD_VALUE | NEW_VALUE 257 | 260 | 1 | (null) | 68726 257 | 260 | 2 | (null) | 6847864
我到目前为止已尝试过:
select distinct d.* from v_audit d
full join v_audit dd on d.ind_id = dd.ind_id
WHERE d.old_run_id = 260
AND dd.new_run_id = 257;
但没有返回任何行。
答案 0 :(得分:0)
也许这就是:
我们使用旧ID离开了联接,如果它不存在,则省略它。
select '257' as OLD_RUN_ID, D.New_Run_ID, D.Ind_ID, DD.Old_Value, D.new_value
from v_audit d
LEFT join v_audit dd
on d.ind_id = dd.ind_id
AND dd.new_run_id = 257
WHERE d.old_run_id = 260 ;
现在,如果其中任何一个可以为null,那么......
select '257' as OLD_RUN_ID, '260' as New_Run_ID, D.Ind_ID, DD.Old_Value, D.new_value
from v_audit d
FULL OUTER join v_audit dd
on d.ind_id = dd.ind_id
AND dd.new_run_id = 257
and d.old_run_id = 260 ;
问题是在联接之后应用限制,您希望它们在联接之前发生