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 に答える