SQL为给定索引之前的最后更改值

时间:2012-09-01 11:31:46

标签: mysql sql

我的表跟踪对值不变的值的更改。

例如,如果资源1和2分别以100和50的值开始,那么它可能是这样的 - 然后资源1在第5天(but resource 2 is unchanged)增加到110,然后资源2在第7天变为60

 resource_id | date_id | value
 ------------+---------+------
 1           | 1       | 100
 2           | 1       |  50
 1           | 5       | 110
 2           | 7       |  60 

是否有一个简单的查询来获取特定日期的资源价值?类似的东西:

SELECT resource_id, date_id, value FROM Resources WHERE ??? -- day = 6

resource_id | date_id | value
------------+---------+------
1           | 5       | 110
2           | 1       |  50

注意: 我不希望插值 - 只是最后一个设定值。

1 个答案:

答案 0 :(得分:3)

我认为这应该有效:

SELECT resource_id, 
       date_id, 
       value 
FROM   resources, 
       (SELECT resource_id, 
               Max(date_id) AS date_id 
        FROM   resources 
        WHERE  date_id <= 6 
        GROUP  BY resource_id ) temp 
WHERE  resources.resource_id = temp.resource_id 
       AND temp.date_id = resources.date_id 

SQLFiddle Demo