SQL模式只选择组中的第一行

时间:2016-08-11 12:37:07

标签: sql sql-server

我有一个包含大量条目的表格,我只需要每个组中的第一个条目。

该表用于存储过去30年的每日基金价格(1000多只基金)。我需要找到该日期之前存在的每个基金之前或特定日期的最后价格(每个基金只有一行)。

在简化表格中,表格包含日期 FundCode 价格列。

以下输入

Date FundCode Price 2016/01/05 X123 1.234 2016/01/04 X123 1.233 2016/01/03 X123 1.222 2016/01/05 A456 1.876 2016/01/04 A456 1.822 2016/01/03 A456 1.776 2016/01/03 M234 3.234

......在2016/01/04查询时,应该生成

Date FundCode Price 2016/01/04 X123 1.233 2016/01/04 A456 1.822 2016/01/03 M234 3.234

我有一个在where中使用相关子查询的解决方案,但是没有多少与索引混在一起会使它在合理的时间内运行。

我确信这有一个直接的解决方案,但我看不到它。

2 个答案:

答案 0 :(得分:0)

有些想法

SELECT fundCode, price, date FROM your_table WHERE date<='date_you_need' GROUP BY fundCode HAVING MAX(date)

这样的查询在SQLITE中有效,你使用什么数据库?

答案 1 :(得分:0)

单个嵌套查询为我提供了每个基金的最大日期,然后在fundCode / Date上进行内部联接,因此......

MaterialWithSuppliers