特定id的最大日期返回值

问题描述 投票:3回答:3

这是我的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,但它没有对任何内容进行分组。我不确定我做错了什么。在此先感谢您的帮助!

sql date max
3个回答
8
投票

您可以使用以下内容:

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


1
投票

这会给你你需要的东西:

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

0
投票

您尚未指定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;
© www.soinside.com 2019 - 2024. All rights reserved.