3

我的表会跟踪对其他情况下不变的值的更改。

例如,如果资源 1 和 2 分别以 100 和 50 的值开始,则可能会出现这种情况 - 然后资源 1 在第 5 天增加到 110 (but resource 2 is unchanged),然后资源 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

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

4

1 回答 1

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 演示

于 2012-09-01T11:34:54.323 回答