SQL查询,MAX日期,分组依据

时间:2015-06-23 12:51:41

标签: sql oracle

有人可以帮我解决SQL查询吗?我正在寻找最近的日期(基准面)。它具有相同的OBJID但不是相同的RADOMGID。

BESADR  ARSMEDEL    METOD   DATUM       FNR         BYGGID  OBJID   RADOMGID

bladv   410         spar    20040930    40014686    1       14778   13640

bladv   340         m       19860505    40014686    1       14778   1026

感谢。

3 个答案:

答案 0 :(得分:0)

使用GROUP BY执行MAX查找每个OBJID的最大数据:

select OBJID, max(DATUM)
from tablename
group by OBJID

如果您想要整行(使用max datum),请使用NOT EXISTS排除旧行:

select *
from tablename t1
where not exists (select 1 from tablename t2
                  where t2.OBJID = t1.OBJID
                    and t2.datum > t1.datum)

如果有平局,将返回两行。

答案 1 :(得分:0)

每个RADOMGID

的所有最新行
select t1.* from yourtable t1
join (
   select radomgid, max(Datum)
   from yourtable t2
   group by radomgid
     ) on t1.radomgid = t2.radomgid 

答案 2 :(得分:0)

如果您只想要最新的,假设该表名为my_object_list

select BESADR, ARSMEDEL, METOD, max(DATUM) DATUM, 
       FNR, BYGGID, OBJID, RADOMGID
from my_object_list mol
Where Objid = '14778'
group by BESADR, ARSMEDEL, METOD, 
       FNR, BYGGID, OBJID, RADOMGID
having max(datum) = mol.datum;