这是我的sql server表
ID Date Value
___ ____ _____
3241 9/17/12 5
3241 9/16/12 100
3241 9/15/12 20
4355 9/16/12 12
4355 9/15/12 132
4355 9/14/12 4
1234 9/16/12 45
2236 9/15/12 128
2236 9/14/12 323
2002 9/17/12 45
这看起来应该很容易,但我不知道为什么我会被卡住。我想只为每个id选择max(date)和max(date)的值。我想忽略所有其他日期,这些日期不是每个id的最大值(日期)。
这是我想要的表格:
ID Date Value
___ ____ _____
3241 9/17/12 5
4355 9/16/12 12
1234 9/16/12 45
2236 9/15/12 128
2002 9/17/12 45
我通过使用max(date)尝试了group,但它没有对任何内容进行分组。我不确定我做错了什么。在此先感谢您的帮助!
您可以使用以下内容:
select t1.id, t2.mxdate, t1.value
from yourtable t1
inner join
(
select max(date) mxdate, id
from yourtable
group by id
) t2
on t1.id = t2.id
and t1.date = t2.mxdate
见Demo
这会给你你需要的东西:
SELECT
m.ID,
m.Date,
m.Value
FROM
myTable m
JOIN (SELECT ID, max(Date) as Date FROM myTable GROUP BY ID) as a
ON m.ID = a.ID and m.Date = a.Date
您尚未指定SQL实现,但这样的事情应该有效:
请注意,op没有明确要求使用max(),只是为了获取最大[imum]日期的id值。
TSL
select top 1 ID, Date, Value from yourtable order by Date DESC;
不是TSQL,必须支持限制:(未测试。)
select ID, Date, Value from yourtable order by Date DESC limit 1,1;