表如下:ID  FLAG_NAME          CREATETIME         NUM FLAG1      check         2010-06-10 20:25:10   1    02      check         2010-06-10 20:26:10   1    03      query         2010-06-10 20:30:10   2    04      query         2010-06-10 20:30:15   2    1查询结果要求NUM相同的记录合并成一条,
结果列包括FLAG_NAME, CREATETIME, FLAG,CREATETIME取相同NUM记录中的最大值,
若相同NUM的多条记录中FLAG存在1,则取1,否则取0,并且在显示时0为“成功”,1为“失败”。

解决方案 »

  1.   

    需要查询结果如下:
    check  2010-06-10 20:26:10  成功
    query  2010-06-10 20:30:15  失败
      

  2.   

    select FLAG_NAME, max(CREATETIME),max(NUM),decode(max(FLAG),1,'失败','成功');
    from table 
    group by FLAG_NAME试试
      

  3.   

    with temp as(
    select 1 id,'check' flag_name,to_date('2010-06-10 20:25:10','yyyy-mm-dd hh24:mi:ss') createtime,1 num,0 flag from dual
    union all
    select 2 id,'check' flag_name,to_date('2010-06-10 20:26:10','yyyy-mm-dd hh24:mi:ss') createtime,1 num,0 flag from dual
    union all
    select 3 id,'query' flag_name,to_date('2010-06-10 20:30:10','yyyy-mm-dd hh24:mi:ss') createtime,2 num,0 flag from dual
    union all
    select 4 id,'query' flag_name,to_date('2010-06-10 20:30:15','yyyy-mm-dd hh24:mi:ss') createtime,2 num,1 flag from dual
    )
    select num,flag_name,createtime,case when flag = '0' then '成功' else '失败' end from (
    select flag_name,max(createtime) createtime,num,max(flag) flag from temp group by flag_name,num
    )
      

  4.   

    SELECT   flag_name,  MAX (createtime),
             CASE
                WHEN MAX (flag) = 1
                   THEN '失败'
                ELSE '成功'
             END CASE
        FROM dl_test
    GROUP BY flag_name 其中dl_test是我按你的数据要求建的表,已经过测试,和你想要的结果一致,记得给分哟!
      

  5.   

    对不起,帮我再看一下:
    表如下:
    ID FLAG_NAME CREATETIME NUM FLAG1 check 2010-06-10 20:25:10 1 02 check 2010-06-10 20:26:10 1 03 query 2010-06-10 20:30:10 2 04 query 2010-06-10 20:30:15 2 15 check 2010-06-10 20:40:15 3 06 check 2010-06-10 20:40:20 3 0结果应该是:
    check 2010-06-10 20:26:10 成功
    query 2010-06-10 20:30:15 失败
    check 2010-06-10 20:40:20 成功
      

  6.   

    本身问题感觉说的不是太清楚。
        楼主 要求 :CREATETIME取相同NUM记录中的最大值    5楼答案,能做到吗啊?      问题分组条件我都没看出来用什么好。 如果要按照【CREATETIME取相同NUM记录中的最大值
    】这样的要求肯定要根据NUM分组下吧。    
      

  7.   

    楼主说的没错,最好分组下,如果你的业务需求允许的话
    select FLAG_NAME, max(CREATETIME),NUM,decode(max(FLAG),1,'失败','成功');
    from table 
    group by FLAG_NAME,NUM