【发布时间】:2020-10-02 10:27:09
【问题描述】:
我正在尝试设计一个可以返回每年最早日期的记录的 SQL 查询。假设我有一个如下表:
Date | Category | Value
========== | ======== | =====
2019-01-03 | Apple | 5
2019-01-03 | Orange | 2
2019-01-20 | Apple | 5
2019-01-20 | Orange | 8
2019-02-05 | Apple | 1
2019-02-05 | Peach | 5
2018-01-02 | Apple | 2
2018-01-02 | Orange | 9
2018-05-10 | Apple | 3
2018-05-10 | Orange | 5
2018-07-20 | Apple | 6
2018-07-20 | Orange | 1
我正在尝试生成如下所示的表格:
Date | Category | Value
========== | ======== | =====
2019-01-03 | Apple | 5
2019-01-03 | Orange | 2
2018-01-02 | Apple | 2
2018-01-02 | Orange | 9
每年的最早日期会发生变化,这意味着我不能简单地按日和月查询。我试过使用:
SELECT MIN(Date), *
FROM mytable
GROUPBY YEAR(Date)
但这会导致聚合错误:“类别”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中
实现这一目标的最佳方法是什么?
【问题讨论】:
-
您实际使用的是哪些 rdms?
-
我的数据库在 Microsoft SQL Server 中运行
标签: sql sql-server date