我有一个包含大量条目的表格,我只需要每个组中的第一个条目。
该表用于存储过去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
中使用相关子查询的解决方案,但是没有多少与索引混在一起会使它在合理的时间内运行。
我确信这有一个直接的解决方案,但我看不到它。
答案 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