Sql 如何按最大日期显示行
使用SQLServer2005 表1Sql 如何按最大日期显示行,sql,sql-server,tsql,sql-server-2005,Sql,Sql Server,Tsql,Sql Server 2005,使用SQLServer2005 表1 ID Date Value 001 23/01/2012 100 002 24/02/2012 200 002 21/01/2012 300 003 18/02/2012 200 003 19/02/2012 100 ... 我想显示每个id的最大(日期)。如何执行此操作 我试过了 选择id、max(日期)、表组中的值(按id)、值 但是显示所有行的输出 预期产出 ID Date Value 001 23/01/2012 100 002 24/02/2
ID Date Value
001 23/01/2012 100
002 24/02/2012 200
002 21/01/2012 300
003 18/02/2012 200
003 19/02/2012 100
...
我想显示每个id的最大(日期)。如何执行此操作
我试过了
选择id、max(日期)、表组中的值(按id)、值
但是显示所有行的输出
预期产出
ID Date Value
001 23/01/2012 100
002 24/02/2012 200
003 19/02/2012 100
...
需要SQL查询帮助吗
with CTE as
(
Select Id, MAX(Date) as maxdate
from table1
Group by Id
)
Select t1.ID, t1.Maxdate, t2.Value
from CTE t1, Table1 t2
where t1.ID = t2.ID
and t1.maxdate = t2.date;
使用排名:
select id,
date, value from (
select id,
date, value,
Rank() over (Partition BY ID order by date DESC) rank
from Table1) a
where a.rank = 1
使用秩超过:
select id,
date, value from (
select id,
date, value,
Rank() over (Partition BY ID order by date DESC) rank
from Table1) a
where a.rank = 1
试试像这样的东西
SELECT id, date, value
FROM table1, (SELECT id, max(date) FROM table1 GROUP BY id) t
WHERE table1.id =t.id AND table1.date=t.date
试试像这样的东西
SELECT id, date, value
FROM table1, (SELECT id, max(date) FROM table1 GROUP BY id) t
WHERE table1.id =t.id AND table1.date=t.date
带+功能的选项
演示
带运算符的选项
演示
带运算符的选项
带+功能的选项演示
演示
带运算符的选项
演示
带运算符的选项
仅按id分组演示。不需要按值分组,也可以从选择的部分中删除值,否则会引发错误如果ID在同一天(和最大的一天)出现两次会发生什么?只按ID分组。不需要按值分组,也可以从选择部分中删除值,否则会引发错误如果ID在同一天(以及最大的一天)出现两次,会发生什么情况?+1我怀疑OP实际上可能需要行编号()而不是排名(),如果可能的话,通过
value
断开联系。+1我怀疑OP实际上可能需要行号()而不是秩号(),如果可能的话,通过value
断开联系。
SELECT t1.id, t1.date, t1.value
FROM Table1 t1 CROSS APPLY (
SELECT 1 AS 'IsMatch'
FROM Table1 t2
WHERE t1.id = t2.id
HAVING MAX(t2.date) = t1.date
) o