我现在有2个表
要判断2个表里库存的大小
storage checkselect a.sid,b.cid,a.qty,b.qty,coalesce(b.qty,0)-coalesce(a.qty,0) as esp_qty
from storage a left join check b
on
a.storage_type=b.storage_type此语句查出来3条记录,esp_qty 分别为10,-5,-10可是当我做子查询select esp_qty
from
(上面的语句) dd
where esp_qty<0查出来的esp_qty 为-10,-5,-10,也就是说本来esp_qty=10的这时候查出来是-10,怎么也搞不明白,
请高手给指点一下.

解决方案 »

  1.   


    试试:
    select /*+ NO_MERGE(dd) */ esp_qty 
    from 
    (上面的语句) dd 
    where esp_qty <0 ;
      

  2.   

    /*+ NO_MERGE(dd) */ 
    是什么意思,直接加到语句里吗
    试了一下,不好使啊,
    还是去掉注释?不好意思,没用过
      

  3.   

    我发现问题在哪里了.
    表里有一个字段为batch_no,它可能为空或者null
    我的on条件里有a.batch_no=b.batch_no 的时候查出来的完全就是错了.
    因此我写成了a.batch_no=b.batch_no or (a.batch_no is null and b.batch_no is null)在查询的时候没问题
    但是把它当作子查询的时候,以上问题才出现.
    不知道如何解决