INSERT INTO SJ_TPICKUP_20070622
 SELECT A.FJOBID,MIN(A.FLSTUPDTIME),
SUBSTR(B.FBIN,1,4)||'-'||(case  when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (1,2,3,4) then '前' 
      when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (5,6,7,8,9,10,11,12) then '后'
      when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (1,2,3,4,5,6,7,8) then '前' 
       when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (9,10,11,12) then '后' 
           end  ),
COUNT(B.FARTICLE),SUM(B.FQTY),SUM(B.FQTY*C.FPRICE)
   FROM TPICKUP A,TPICKUPDTL B,TARTICLE C
  WHERE A.NUM = B.NUM 
    AND B.FARTICLE = C.FGID 
    AND A.FPICKAREA = 20
    AND A.FJOBID >= TO_CHAR(aFILDATE,'YYMMDD')
    AND A.FJOBID <= TO_CHAR(bFILDATE,'YYMMDD')
    --AND A.FLSTUPDTIME >= aFILDATE
    --AND A.FLSTUPDTIME <= bFILDATE
  GROUP BY A.FJOBID,SUBSTR(B.FBIN,1,4)||'-'||(case  when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (1,2,3,4) then '前' 
      when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (5,6,7,8,9,10,11,12) then '后'
      when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (1,2,3,4,5,6,7,8) then '前' 
       when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (9,10,11,12) then '后' 
           end  );
 INSERT INTO SJ_TPICKUP_20070622
 SELECT A.FJOBID,MIN(A.FLSTUPDTIME),SUBSTR(B.FBIN,1,4),COUNT(B.FARTICLE),SUM(B.FQTY),SUM(B.FQTY*C.FPRICE)
   FROM TPICKUP A,TPICKUPDTL B,TARTICLE C
  WHERE A.NUM = B.NUM 
    AND B.FARTICLE = C.FGID 
    AND A.FPICKAREA = 20
    AND A.FJOBID >= TO_CHAR(aFILDATE,'YYMMDD')
    AND A.FJOBID <= TO_CHAR(bFILDATE,'YYMMDD')
    --AND A.FLSTUPDTIME >= aFILDATE
    --AND A.FLSTUPDTIME <= bFILDATE
  GROUP BY A.FJOBID,SUBSTR(B.FBIN,1,4);查询出来的结果COUNT(B.FARTICLE),SUM(B.FQTY),是相同,但SUM(B.FQTY*C.FPRICE)这个的结果就不相同,
望高手指点一下哪里有问题

解决方案 »

  1.   

    语句看不出问题,要贴你的表结构,和数据来看的
    你group by 是不同的,主要就在于SUBSTR(B.FBIN,1,4); 
    第一句是 SUBSTR(B.FBIN,1,4) ¦ ¦'-' ¦ ¦(case  when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (1,2,3,4) then '前' 
          when (substr(fbin,4,1)) in (1,3,5,7,9)  and (substr(fbin,5,2)) in (5,6,7,8,9,10,11,12) then '后' 
          when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (1,2,3,4,5,6,7,8) then '前' 
          when (substr(fbin,3,2)) in (2,4,6,8,10)  and (substr(fbin,5,2)) in (9,10,11,12) then '后' 
              end  ); 
      

  2.   

    是这样的,这是货位。FBIN如20010301,2002020120100222,如果第四位是奇数的,就五六位IN1,2,3,4就前,5,6,7,8,9,10,11,12就是后,相反,如果第四位是偶数,1,2,3,4,5,6,7,8是前,9,10,11,12是后
      

  3.   

    结构
    tpickup
    NUM VARCHAR2(14) N
    FJOBID VARCHAR2(10) N
    FLSTUPDTIME DATE N sysdate
    FCREATETIME DATE N sysdate
    FORDER VARCHAR2(20) N
    FSTORE VARCHAR2(8) N
    FPICKER INTEGER Y
    FPATH VARCHAR2(4) Y
    FPICKAREA VARCHAR2(4) N
    FARTICLENUMBER INTEGER N
    FARTICLECOUNTSTR VARCHAR2(15) N
    STAT INTEGER N
    FCATEGORY VARCHAR2(10) N
    FOK INTEGER N 0
    FPRINTTIME DATE Y
    FFILLER INTEGER Y
    FSHIPED INTEGER N 0
    FMEMO VARCHAR2(255) Y
    FTOTAL NUMBER(24,2) Y 0
    FCHESTS NUMBER(24,4) N 0
    FREALCHESTS NUMBER(24,4) N 0
    FSNDTIME DATE Y
    FPICKMETHOD VARCHAR2(20) N '手工单据'
    FENTIRES NUMBER(24,4) N 0
    FCOLLECTBIN VARCHAR2(8) Y
    FCROSSNUM VARCHAR2(14) Y
    FCROSSORDER VARCHAR2(20) Y
    FAUDITENTIRES NUMBER(24,4) N 0
    FAUDITCHESTS NUMBER(24,4) N 0
    FAUDITED INTEGER N 0
    FAUDITOPER INTEGER Y
    FVOL NUMBER(24,3) N 0
    FTALLYPRNTIME DATE Y
    FORDSHIP VARCHAR2(14) Y
    FSTORAGE VARCHAR2(20) Y
    FCLIENTTYPE VARCHAR2(10) N '便利'
    FPRERPL INTEGER N 0
    FLOGIXEXGTIME DATE Y
      

  4.   

    tpickupdtl
    NUM VARCHAR2(14) N
    LINE INTEGER N
    FBIN VARCHAR2(8) N
    FARTICLE INTEGER N
    FLOT VARCHAR2(14) N '-'
    FEXPIRACY DATE Y
    FMUNIT VARCHAR2(6) N
    FQPCSTR VARCHAR2(15) N
    FQTYSTR VARCHAR2(15) N
    FQPC NUMBER(24,4) N
    FQTY NUMBER(24,4) N
    FREALQTYSTR VARCHAR2(15) N '0'
    FREALQTY NUMBER(24,4) N 0
    FSTKINNUM VARCHAR2(14) Y '-'
    FHAS2 INTEGER N 0
    FALCNTC VARCHAR2(14) N
    FALCNTCLINE INTEGER N
    FWEIGHT NUMBER(24,3) N 0
    FCHESTNUM VARCHAR2(20) Y
    FLOCK INTEGER N 0
    FCROSSLINE INTEGER Y
    FSHIPED NUMBER(24,2) N 0
    FVOL NUMBER(24,3) N 0
    FVENDOR INTEGER Y
    FPICKER INTEGER Y
    FPICKTIME DATE Y
    FOWNER INTEGER Y
    FWRHCARD VARCHAR2(14) Y
    FINAMOUNT NUMBER(24,4) Y
    FOUTAMOUNT NUMBER(24,4) Y
    FCHKQTY NUMBER(24,4) Y
    FPALLETCODE VARCHAR2(10) Y
    FDATERECEIVED DATE Y