SQL - 多条准则MAX语句

时间:2017-11-20 20:55:46

标签: sql max multiple-columns

我有一个包含数百万行的表,每个行都有一个时间戳。我需要一个语句来检查代码和日期条目,并找到两者的最新时间戳。我尝试了以下查询但是我收到错误“列中没有找到列rownumber。”

select 
code, date, other_crit1, other_crit2, timestamp
from (select ROW_NUMBER() over (partition by code order by date desc, timestamp desc)
    code, date, other_crit1, other_crit2, timestamp
    from MyTable) t
where RowNumber = 1

我觉得我很亲密,但并不完全在那里。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要为该列命名。我使用seqnum

select code, date, other_crit1, other_crit2, timestamp
from (select row_number() over (partition by code order by date desc, timestamp desc) as seqnum,
             code, date, other_crit1, other_crit2, timestamp
      from MyTable
     ) t
where seqnum = 1;

如果您愿意,可以将其称为RowNumber。我对这个名称并不感到兴奋,因为除非有明确的order by子句,否则SQL结果集是无序的。