sql - 按最大日期和 ID 分组

标签 sql sql-server select time group-by

我有下表:

 id         value       date
 ---------  ---------  ----------
 1          324          2017-05-19 02:00:00
 2          564          2017-05-19 04:00:00
 3          675          2017-05-19 03:00:00
 3          642          2017-05-19 05:00:00
 4          642          2017-05-19 07:00:00
 5          642          2017-05-19 06:00:00
 6          642          2017-05-19 05:00:00
 6          642          2017-05-19 12:00:00
 7          642          2017-05-19 01:00:00
 8          642          2017-05-19 13:00:00
 8          642          2017-05-19 02:00:00

我想 GROUP BY id 列,但还要从第一列中选​​择 valuedate 列按 date 降序排列的行,带有 id

结果应该是这样的:

 id         value       date
 ---------  ---------  ----------
 1          324          2017-05-19 02:00:00
 2          564          2017-05-19 04:00:00
 3          642          2017-05-19 05:00:00
 4          642          2017-05-19 07:00:00
 5          642          2017-05-19 06:00:00
 6          642          2017-05-19 12:00:00
 7          642          2017-05-19 01:00:00
 8          642          2017-05-19 13:00:00

最佳答案

这样的事情应该可以工作:

SELECT t1.id, t1.value, t1.date
FROM your_table t1
INNER JOIN (
    SELECT id, MAX(date) date
    FROM your_table
    GROUP BY id
) t2
ON t1.id = t2.id AND t1.date = t2.date

关于sql - 按最大日期和 ID 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063719/

相关文章:

select - 从 iOS 15 开始,Safari 上的间歇性 HTML 选择卡住

DB物理插入MySQL SELECT反向查询

sql - 在 Postgres 函数中显示下一个半小时时间点

sql - 当查询得到非常大的结果时会发生什么

sql-server - 何时开始担心数据库表中的行

sql-server - SQL Server : Insert Result of WHOAMI into Table

c# - 查询 SQL Server 的百分比

sql - 连接 2 个表并过滤 Sql 查询

php - 使用 PHP 解析时,WHERE NOT EXISTS 在 SQL 中出现语法错误

MYSQL SUM() 返回前 10 个值