SQL问题,OUTER JOIN,检索数据问题

如图所示有四个表 从四个表中要得出图中灰色部分的数据SQL文应怎么写?
SELECT A.YM,A.KEY1,B.AMT,C.AMT1,D.AMT2,E.AMT3
FROM (SELECT YM,KEY1 FROM TABLE2 UNION ALL
SELECT YM,KEY1 FROM TABLE3 UNION ALL
SELECT YM,KEY1 FROM TABLE4) A,TABLE1 B,TABLE2 C,TABLE3 D,TABLE4 E
WHERE A.KEY1 = B.KEY1
AND A.KEY1 = C.KEY1(+)
AND A.YM = C.YM(+)
AND A.KEY1 = D.KEY1(+)
AND A.YM = D.YM(+)
AND A.KEY1 = E.KEY1(+)
AND A.YM = E.YM(+)
ORDER BY KEY1,YM;
这个是我写的SQL但是由于用OUTER JOIN 参照的KEY1 与YM有重复的地方
所以现在运行上方的SQL得不到图中灰色部分的数据,望哪位ORACLE高手
给予答复,谢谢。

select coalesce(t1.ym, t2.ym, t3.ym) ym, coalesce(t1.key1, t2.key1, t3.key) key1,
t0.amt, t1.amt1, t2.amt2, t3.amt3
from table31 t1 full join table32 t2 on t1.key1=t2.key1 and t1.ym=t2.ym
full join table33 t3 on coalesce(t1.key1,t2.key1)=t3.key and coalesce(t1.ym,t2.ym)=t3.ym
join table30 t0 on coalesce(t1.key1,t2.key1,t3.key)=t0.key1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-31
因为看不到你的结果 所以也不是很明白
我感觉应该就是你这个思路 没什么大错
A表不是用的union all 吗 改用union 试一下
我也不确定有没有影响
相似回答