【发布时间】:2019-05-23 22:09:47
【问题描述】:
请帮我解决以下问题。我已经花了一周时间尝试将所有逻辑放入一个 SQL 查询中,但仍然没有得到优雅的结果。希望SQL高手给点提示,
我有一个包含 4 个字段的表:日期、过期月、过期年和值。主键在 3 个第一个字段上定义。因此,对于一个具体的日期,很少有不同的 expire_month、expire_year 值存在。我需要为每个日期从它们中选择一个值,显示在表格中。
例如,当我执行查询时:
SELECT date, expire_month, expire_year, value FROM futures
WHERE date = ‘1989-12-01' ORDER BY expire_year, expire_month;
我得到一个按到期时间排序的同一日期的值列表(月份用字母编码):
1989-12-01 Z 1989 408.25
1989-12-01 H 1990 408.25
1989-12-01 K 1990 389
1989-12-01 N 1990 359.75
1989-12-01 U 1990 364.5
1989-12-01 Z 1990 375
该日期的正确单个值是从顶部开始的第 k 个记录。例如,of k 是 2,那么«正确的单个»记录将是:
1989-12-01 H 1990 408.25
如何为表格中的每个日期选择这些“正确的单一”值?
【问题讨论】:
-
@nLee,因为 OP 想要每个日期的第 n 行,所以如果不进行大量更改将无法工作。