【发布时间】:2014-03-31 15:37:26
【问题描述】:
假设我在一个表中有这些行:
ID | SomeColumn | SomeDateTime
---+------------+-------------
1 | X1 | 01-01-14 14:00:00
2 | X2 | 01-01-14 22:00:00
3 | Y1 | 01-03-14 12:00:00
4 | Y2 | 01-03-14 23:00:00
如何进行 SQL 查询以仅获取具有 不同 日期的行(选择最新时间)?也就是说,查询的结果应该是:
ID | SomeColumn | SomeDateTime
---+------------+-------------
2 | X2 | 01-01-14 22:00:00
4 | Y2 | 01-03-14 23:00:00
我试过了,但它不起作用:
SELECT MAX(SomeDateTime),ID,SomeColumn,SomeDateTime
FROM MyTable GROUP BY (SomeDateTime::date)
我得到的错误是:
The column "MyTable.ID" needs to appear in the GROUP BY clause or be used in an aggregation function
我正在使用 PostgreSQL,但如果您有其他数据库引擎的答案,我也会投票。
【问题讨论】:
标签: sql database postgresql relational-database greatest-n-per-group