select a.clientno clientno,
       a.jname dianname,
       a.dianno dianno,
       sum(nvl(c.numbers,0)) zdnum,
       SUM(ROUND(NVL(C.NUMBERS * d.PRICE,0),2)) zdmayang,
       ( SELECT SUM(NVL(G_OUTINFO.NUMBERS,0))
     FROM G_OUTINFO,Y_ZDML
     WHERE G_OUTINFO.ZDCODE=Y_ZDML.ZDMLNO AND
               G_OUTINFO.BUYUNIT=A.CLIENTNO AND
   Y_ZDML.PICINO=:as_picino AND
     Y_ZDML.MLXX LIKE :as_mlxx) OUTNUM,
       ( SELECT SUM(ROUND(NVL(G_OUTINFO.NUMBERS * G_BOOKINFO.PRICE,0),2))
                      FROM G_OUTINFO,G_BOOKINFO,Y_ZDML
     WHERE G_OUTINFO.ZDCODE=Y_ZDML.ZDMLNO AND
         G_BOOKINFO.BOOKID=G_OUTINFO.BOOKID AND  G_OUTINFO.BUYUNIT=A.CLIENTNO AND
         Y_ZDML.PICINO=:as_picino AND   Y_ZDML.MLXX LIKE :as_mlxx) OUTMAYANG
       from g_cinfo a,y_zd c,y_zdml d
where c.buyunit=a.clientno and
      d.zdmlno=c.zdmlno and
      d.picino=:as_picino and
      d.mlxx like :as_mlxx and
      a.clientno like :as_buyunit
group by a.clientno,
a.jname,
a.dianno
order by a.dianno

解决方案 »

  1.   

    a.clientno clientno,
           a.jname dianname,
           a.dianno dianno,
    中有的不能满条件
      

  2.   

    楼主竟然能写这么复杂的语句,看来挺厉害的。
    ( SELECT SUM(NVL(G_OUTINFO.NUMBERS,0))
         FROM G_OUTINFO,Y_ZDML
         WHERE G_OUTINFO.ZDCODE=Y_ZDML.ZDMLNO AND
                   G_OUTINFO.BUYUNIT=A.CLIENTNO AND
       Y_ZDML.PICINO=:as_picino AND
         Y_ZDML.MLXX LIKE :as_mlxx) OUTNUM
    这部分相当于一个表达式,与普通字段一样,它不是分组表达式。虽然在里边有SUM。OUTMAYANG也一样。所以系统会报告非分组表达式。
      

  3.   

    select 里面带到了嵌套表达式,应该不可以用group by 子句
      

  4.   

    在group by 后面改成
    group by       
           a.clientno clientno,
           a.jname dianname,
           a.dianno dianno,
      

  5.   

    用group by 的时候一定要前后对应,你的对应肯定有问题的在好好看看
      

  6.   

    group by 只能对一个表的字段进行分组。
           
      

  7.   

    同意 hc_yao(木头) 说的
      

  8.   

    这种事我没碰过,但你怎么没想过用这种方式SELECT table1.xxx, table1.xxx, table2.xxx, table3.xxx, table4.xxx,
            table2.xxx, table3.xxx 
    FROM
    (
      SELECT xxx,yyy, SUM(NVL(zzz)) scql
      FROM 表名 a
      WHERE  条件
      GROUP BY xxx,yyy
    ) table1,
    (
      SELECT xxx,yyy, SUM(NVL(zzzz)) scql
      FROM 表名 a
      WHERE  条件
      GROUP BY xxx,yyy
    ) table2,
    ……………………WHERE 
      (table1.xxx=table2.xxx) and ……………………
      

  9.   

    select a.clientno clientno,
           a.jname dianname,
           a.dianno dianno,
           sum(nvl(c.numbers,0)) zdnum,
           SUM(ROUND(NVL(C.NUMBERS * d.PRICE,0),2)) zdmayang,
           ( SELECT SUM(NVL(G_OUTINFO.NUMBERS,0))
         FROM G_OUTINFO,Y_ZDML
         WHERE G_OUTINFO.ZDCODE=Y_ZDML.ZDMLNO AND
                   G_OUTINFO.BUYUNIT=A.CLIENTNO AND
       Y_ZDML.PICINO=:as_picino AND
         Y_ZDML.MLXX LIKE :as_mlxx) OUTNUM,
           ( SELECT SUM(ROUND(NVL(G_OUTINFO.NUMBERS * G_BOOKINFO.PRICE,0),2))
                          FROM G_OUTINFO,G_BOOKINFO,Y_ZDML
         WHERE G_OUTINFO.ZDCODE=Y_ZDML.ZDMLNO AND
             G_BOOKINFO.BOOKID=G_OUTINFO.BOOKID AND  G_OUTINFO.BUYUNIT=A.CLIENTNO AND
             Y_ZDML.PICINO=:as_picino AND   Y_ZDML.MLXX LIKE :as_mlxx) OUTMAYANG
           from g_cinfo a,y_zd c,y_zdml d
    where c.buyunit=a.clientno and
          d.zdmlno=c.zdmlno and
          d.picino=:as_picino and
          d.mlxx like :as_mlxx and
          a.clientno like :as_buyunit
    group by clientno,
    jname,
    dianno
    order by dianno