SELECT  B.JIGYOUSHO_C   JIGYOUSHO_C,
       B.KANJOU_C KANJOU_C,
       B. YOKO_C  YOKO_C,
       B.GENKABUMON_C      GENKABUMON_C , 
       B.TATEYABUMON_C     TATEYABUMON_C,
       B.SAKUBAN  SAKUBAN, 
       B.UKEBAN UKEBAN,
       B.SAKUBANEDABAN         SAKUBANEDABAN,
       B.BIKOU               BIKOU,
       B.SYUKKA_SIJIBI       ,
       B.TEHAISURYO          ,
       B.SHIKOMITEHAI        ,
……………………………………
       MAX(KEI.END_T)  END_T
     FROM DAT_MCL_TEHAI        B,
       KEI_COM_FU001  KEI
   WHERE  B.JIGYOUSHO_C            = KEI.KOJOUCODE(+)
    AND   B.KANJOU_C          = KEI.KANJYO_C(+)
    AND   B.YOKO_C            = KEI.YOKO_C(+)
    AND   B.GENKABUMON_C       = KEI.BUMON_C(+)
    AND   B.TATEYABUMON_C     = KEI.TATEYA_C(+)
    AND   B.SAKUBAN           = KEI.SKBN(+)
  GROUP BY  B.JIGYOUSHO_C ,B.KANJOU_C ,B.YOKO_C,B.GENKABUMON_C,
    B.TATEYABUMON_C, B.SAKUBAN,B.UKEBAN,
    B.SAKUBANEDABAN,B.BIKOU,B.SYUKKA_SIJIBI ,B.TEHAISURYO,
    B.SHIKOMITEHAI…………
B表中很多字段都有用,我想用SELECT B.*,MAX(KEI.END_T)  END_T   但是GROUP BY后面怎么写能简便?

解决方案 »

  1.   

    好像没有什么办法。如果用程序语言来拼接sql,那可以这么做
    std::stringstream ss_group;
    ss_group<<"B.JIGYOUSHO_C,"<<"B.KANJOU_C ,"<<...;
    std::stringstream ss_sql;
    ss_sql<<"select "<<ss_group.str()<<"  MAX(KEI.END_T) END_T"<<...;
    ss_sql<<" group by "<<ss_group.str()<<...;
      

  2.   

    如果都用到了,还不如不用GROUP BY,还不是一样的?
      

  3.   

    表的结构是没办法改的,我用了一个子表先算MAX,然后再连被评批繁琐……看来还是得一条一条列出来了。TO sbaz(万神渡劫) 不用GROUP BY不让我通过啊,我也想那样呢
      

  4.   

    那你就这么写吧.
    SELECT  B.JIGYOUSHO_C   JIGYOUSHO_C,
           B.KANJOU_C KANJOU_C,
           B. YOKO_C  YOKO_C,
           B.GENKABUMON_C      GENKABUMON_C , 
           B.TATEYABUMON_C     TATEYABUMON_C,
           B.SAKUBAN  SAKUBAN, 
           B.UKEBAN UKEBAN,
           B.SAKUBANEDABAN         SAKUBANEDABAN,
           B.BIKOU               BIKOU,
           B.SYUKKA_SIJIBI       ,
           B.TEHAISURYO          ,
           B.SHIKOMITEHAI        ,
    ……………………………………
           MAX(KEI.END_T)over()  END_T ------改了这里.
         FROM DAT_MCL_TEHAI        B,
           KEI_COM_FU001  KEI
       WHERE  B.JIGYOUSHO_C            = KEI.KOJOUCODE(+)
        AND   B.KANJOU_C          = KEI.KANJYO_C(+)
        AND   B.YOKO_C            = KEI.YOKO_C(+)
        AND   B.GENKABUMON_C       = KEI.BUMON_C(+)
        AND   B.TATEYABUMON_C     = KEI.TATEYA_C(+)
        AND   B.SAKUBAN           = KEI.SKBN(+)
      

  5.   

    这样写也不好,它是全部记录的最大值,在over()里加了partition by...也没有什么意义.
    你还是老老实实那么写好了.
    其实我还是有疑问,如果你表中没有重复记录,分组以后每一条都是一定的,有多少记录就分多少组.它所得到的最大值和最小值都是一样的了.
      

  6.   

    B表和KEI表是一对多的关系,要求每条关联的KEI表中最大的日期