HAVING F_RQ=MAX(F_RQ) --这一句出问题,having关键字不可能认识F_RQ,它不属于分组功能.SELECT F_SPNM, F_BMNM, F_JYFS,max(f_rq) f_rq
     round(F_JCSL * F_LSDJ,2),
     round(F_JCSL * F_PJJJ,2),
     round(F_JCYS, 2) 
FROM HSSPRJZ  WHERE F_RQ <='20031025'      
GROUP BY F_SPNM, F_BMNM, F_JYFS

解决方案 »

  1.   


    如果要插入
    INSERT INTO TABLE1(F_SPNM, F_BMNM, F_JYFS, F_XM1, F_XM2, F_XM3)
    SELECT F_SPNM, F_BMNM, F_JYFS, 
         round(F_JCSL * F_LSDJ,2),
         round(F_JCSL * F_PJJJ,2),
         round(F_JCYS, 2) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS 
    HAVING F_RQ=MAX(F_RQ) 
    该怎么办?这时不能 max(f_rq) f_rq 在SELECT 语句中了,盼赐教
      

  2.   

    SELECT F_SPNM, F_BMNM, F_JYFS, 
         round(F_JCSL * F_LSDJ,2),
         round(F_JCSL * F_PJJJ,2),
         round(F_JCYS, 2) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS, F_RQ
    HAVING F_RQ=MAX(F_RQ) 
      

  3.   

    INSERT INTO TABLE1(F_SPNM, F_BMNM, F_JYFS, F_XM1, F_XM2, F_XM3)
    SELECT F_SPNM, F_BMNM, F_JYFS, 
         round(F_JCSL * F_LSDJ,2),
         round(F_JCSL * F_PJJJ,2),
         round(F_JCYS, 2) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS 这样就是了
      

  4.   

    后面三个round都有问题,其中所包含字段都不在group中。楼主的意思应该是取分组中按某个条件比较后的最大值。
      

  5.   

    将round中的字段加入GROUP BY 也不行,提示不是GROPB BY 表达式,不信各位试一试,以下面的格式:INSERT INTO TABLE1(F_SPNM, F_BMNM, F_JYFS, F_XM1, F_XM2, F_XM3)       SELECT F_SPNM, F_BMNM, F_JYFS, 
         round(F_JCSL * F_LSDJ,2),
         round(F_JCSL * F_PJJJ,2),
         round(F_JCYS, 2) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS, F_JCSL,F_LSDJ,F_JCSL,F_PJJJ,F_JCYS
    HAVING F_RQ=MAX(F_RQ) 以下面的方式也不行:
    INSERT INTO TABLE1(F_SPNM, F_BMNM, F_JYFS, F_XM1, F_XM2, F_XM3)       SELECT F_SPNM, F_BMNM, F_JYFS, 
         round(F_JCSL * F_LSDJ,2),
         round(F_JCSL * F_PJJJ,2),
         round(F_JCYS, 2) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS, F_JCSL,F_LSDJ,F_JCSL,F_PJJJ,F_JCYS
    HAVING F_RQ=(SELECT MAX(F_RQ) FROM HSSPRJZ)
      

  6.   

    sorry:
    INSERT INTO TABLE1(F_SPNM, F_BMNM, F_JYFS, F_XM1, F_XM2, F_XM3)
    SELECT F_SPNM, F_BMNM, F_JYFS, 
         max(round(F_JCSL * F_LSDJ,2)),
         max(round(F_JCSL * F_PJJJ,2)),
         max(round(F_JCYS, 2)) 
    FROM HSSPRJZ  WHERE F_RQ <='20031025'      
    GROUP BY F_SPNM, F_BMNM, F_JYFS 
      

  7.   

    先去除满足最大条件的行的关键字,让后再取数据,分组取时是针对的整个分组。按照的语句group by ..round(F_JCSL * F_LSDJ,2)才对,不过我想这不是你要的结果。最好说明一下你的意图。