表如下: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为“失败”。
结果列包括FLAG_NAME, CREATETIME, FLAG,CREATETIME取相同NUM记录中的最大值,
若相同NUM的多条记录中FLAG存在1,则取1,否则取0,并且在显示时0为“成功”,1为“失败”。
check 2010-06-10 20:26:10 成功
query 2010-06-10 20:30:15 失败
from table
group by FLAG_NAME试试
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
)
CASE
WHEN MAX (flag) = 1
THEN '失败'
ELSE '成功'
END CASE
FROM dl_test
GROUP BY flag_name 其中dl_test是我按你的数据要求建的表,已经过测试,和你想要的结果一致,记得给分哟!
表如下:
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 成功
楼主 要求 :CREATETIME取相同NUM记录中的最大值 5楼答案,能做到吗啊? 问题分组条件我都没看出来用什么好。 如果要按照【CREATETIME取相同NUM记录中的最大值
】这样的要求肯定要根据NUM分组下吧。
select FLAG_NAME, max(CREATETIME),NUM,decode(max(FLAG),1,'失败','成功');
from table
group by FLAG_NAME,NUM