SELECT (substr(DYSFBH,2,2)) DYSFBH ,JZBH,YSXM, SUM(JE1) YPFY, SUM(JE2) ZFY
FROM YBXX.YBSFXX WHERE ZXRQ BETWEEN TO_DATE('2005-11-03','YYYY-MM-DD') 
AND TO_DATE('2008-11-26','YYYY-MM-DD') AND JZLX IN ('1', '5') 
GROUP BY substr(DYSFBH,2,2),JZBH,YSXM ORDER BY DYSFBH,JZBH,YSXM
这里在字段 substr(DYSFBH,2,2),和JZBH分组的情况下,比如同一条JZBH有4条记录对应不同的YSXM或为空,我现在需要取ysxm不为空的一条,能实现吗?如果不能实现那么只能取出全部明细,然后再代码中滚,这样的话对服务器代价太大

解决方案 »

  1.   

    加个条件就行了
    SELECT (substr(DYSFBH,2,2)) DYSFBH ,JZBH,YSXM, SUM(JE1) YPFY, SUM(JE2) ZFY 
    FROM YBXX.YBSFXX 
    WHERE ZXRQ BETWEEN TO_DATE('2005-11-03','YYYY-MM-DD') 
    AND TO_DATE('2008-11-26','YYYY-MM-DD') AND JZLX IN ('1', '5') 
    AND YSXM IS NOT NULL
    GROUP BY substr(DYSFBH,2,2),JZBH,YSXM 
    ORDER BY DYSFBH,JZBH,YSXM 
      

  2.   

    加个条件不行的啊,首先YSXM 为空的所有金额都是需要的,其次还存在多个都不为空的不同的YSXM 的同一JZBH
      

  3.   

    在group by 后面 加一个 having  ysxm IS NOT NULL 
      

  4.   

    这样你就不能用ORDER BY 了
    SELECT (substr(DYSFBH,2,2)) DYSFBH ,JZBH,YSXM, SUM(JE1) YPFY, SUM(JE2) ZFY ,count(YSXM) xxx
    FROM YBXX.YBSFXX 
    WHERE ZXRQ BETWEEN TO_DATE('2005-11-03','YYYY-MM-DD') 
    AND TO_DATE('2008-11-26','YYYY-MM-DD') AND JZLX IN ('1', '5') 
    GROUP BY substr(DYSFBH,2,2),JZBH,YSXM 
    having count(YSXM)>0
      

  5.   

    没太弄清楚楼主的意思。
    比如你有如下四条明细。
    BH   XM    qty
    01    01    1
    01    02    1
    01    null  1
    01    null  1
    -------------
    你需要的结果是什么?
    BH   XM    qty
    01   01    4
    ----------------
    还是
    BH   XM    qty
    01   01    1
    01   02    3
      

  6.   

    需要的结果是什么? 
    BH  XM    qty 
    01  01    4 
    ---------------- 

     
    BH  XM    qty 
    01  02    4 
    ---------------- 
    都可以
      

  7.   

    SELECT (substr(DYSFBH,2,2)) DYSFBH ,JZBH,max(YSXM), SUM(JE1) YPFY, SUM(JE2) ZFY 
    FROM YBXX.YBSFXX WHERE ZXRQ BETWEEN TO_DATE('2005-11-03','YYYY-MM-DD') 
    AND TO_DATE('2008-11-26','YYYY-MM-DD') AND JZLX IN ('1', '5') 
    GROUP BY substr(DYSFBH,2,2),JZBH,YSXM ORDER BY DYSFBH,YSXM