日期:2014-05-17  浏览次数:20917 次

怎么只显示一组里,最大的那个值?
数据如下:
工单号         完成时间毫秒值
000001         1355662908
000001         1355662907
000001         1355662906
000002         1355662905
000002         1355662904

怎么写个sql,可以展示如下格式的数据
工单号         完成时间毫秒值
000001         1355662908
000001         
000001         
000002         1355662905
000002         

也就是工单号为000001的一组里只显示第一个也就是值最大的这个数,000002类似

select c1, c2 from table1 order by c2

------解决方案--------------------
select c1, max(c2) from table1 order by group by c1
------解决方案--------------------
引用:
忘了说了,原来的sql里有10几个字段,还有好多字段是用函数,case/when算出来的。

如果用group by的话,是不是要把这10几个字段都列到group by后面



select "工单号",decode(rn,1,"完成时间毫秒值") from(
select "工单号","完成时间毫秒值", 
       row_number() over(partition by "工单号" order by "完成时间毫秒值" desc) rn from ax 
);

 
工单号 DECODE(RN,1,"完成时间毫秒值")
------ -----------------------------
000001 1355662908
000001 
000001 
000002 1355662905
000002