当前位置: 代码迷 >> Oracle开发 >> 一个很诡异的SQL嵌套查询有关问题,求教高手解释一下原因
  详细解决方案

一个很诡异的SQL嵌套查询有关问题,求教高手解释一下原因

热度:95   发布时间:2016-04-24 06:40:11.0
一个很诡异的SQL嵌套查询问题,求教高手解释一下原因?
问题很隐藏,无任何报错,子查询中的where条件用到了最后外面主查询表中的一个值,但这个条件居然没有效果。

为什么这个内查询中的条件(a.entity_id = t1.entity_id)会无效?

子查询单独查询,才是正确的结果,见下图:


有知道原因的给我讲解一下,非常感谢




------解决方案--------------------
试试把子查询中的两层写到同一层里:
select avg(sum(a.veri_oil_prod_incr_mon)) from .... a where ...... group by ....


------解决方案--------------------
子查询中的谓词条件关联到外层的表时,尽量不要跨多层
并且这里涉及到聚合的问题,由于外层根据entity_id分组,所以理论上写法是对的,否则还要多加一层聚合函数。大概是由于跨了两层导致解析错误,使得avg()没有效果