对于下表
ID DATE FIELD1 FIELD2 FIELD4 123456 01.07.2014 00:00:00 EMPLOYER GROUPS TMC SELECT CARE HMO 123789 01.07.2017 00:00:00 EMPLOYER GROUPS MQC SELECT CARE HMO
如何仅选择具有max(date)的一行?即2017年7月1日
答案 0 :(得分:2)
在Oracle 12+中,您可以使用:
select t.*
from t
order by date desc
fetch first 1 row only;
在早期版本中,您使用子查询:
select t.*
from (select t.*
from t
order by date desc
) t
where rownum = 1;
如果您需要多个具有相同最大日期的记录:
select t.*
from t
where t.date = (select max(t2.date) from t);
答案 1 :(得分:2)
select *
from theTable
where Date = (select max(date) from theTable)
应该这样做。如果多行具有相同的日期,请添加top 1
。
答案 2 :(得分:0)
对于tsql / SQL Server,您可以使用以下内容
DECLARE @max_date datetime;
SELECT @max_date = max(DATE) from table_name;
SELECT TOP 1 * FROM table_name WHERE DATE = @max_date;
“ TOP 1”确保您仅收到1行。 除非您在查询中添加“ ORDER BY”语句,否则此行将是任意的。
答案 3 :(得分:0)
或者
dense_rank()
函数可以用作:
select dt, ID
from
(
select dense_rank() over (order by "Date" desc) as dr,
"Date" as dt,
ID
from tab
)
where dr = 1;
或者如果您确定没有 tie (“ Date”列中的 ),甚至可以使用row_number()
函数:
select dt, ID
from
(
select row_number() over (order by "Date" desc) as rn,
"Date" as dt,
ID
from tab
)
where rn = 1;