[Table1] があります。
Date
----------
2013-01-01
2013-02-01
2013-03-01
[表2]
Date Item Qty
---------- ------ ---
2013-01-01 Item 1 10
2013-01-01 Item 2 15
2013-03-01 Item 1 5
Access で [DesiredRows] という名前の保存済みクエリを作成することから始めて、表示する日付/項目値の完全なセットを取得できます。
SELECT Table1.Date, i.Item
FROM
Table1,
(SELECT DISTINCT Item FROM Table2) AS i
...戻る
Date Item
---------- ------
2013-01-01 Item 1
2013-02-01 Item 1
2013-03-01 Item 1
2013-01-01 Item 2
2013-02-01 Item 2
2013-03-01 Item 2
[LastAvailableDates] という名前の保存されたクエリの一部としてそのクエリを使用して、これらのペアのそれぞれについて Table2 で利用可能な最後の日付を取得できます。
SELECT
DesiredRows.Date,
DesiredRows.Item,
MAX(Table2.Date) AS LastAvailableDate
FROM
DesiredRows
INNER JOIN
Table2
ON Table2.Item = DesiredRows.Item
AND Table2.Date <= DesiredRows.Date
GROUP BY DesiredRows.Date, DesiredRows.Item
...戻る
Date Item LastAvailableDate
---------- ------ -----------------
2013-01-01 Item 1 2013-01-01
2013-01-01 Item 2 2013-01-01
2013-02-01 Item 1 2013-01-01
2013-02-01 Item 2 2013-01-01
2013-03-01 Item 1 2013-03-01
2013-03-01 Item 2 2013-01-01
最後に、そのクエリをクエリで使用して、最終結果を取得できます
SELECT
LastAvailableDates.Date,
LastAvailableDates.Item,
Table2.Qty
FROM
LastAvailableDates
INNER JOIN
Table2
ON Table2.Date = LastAvailableDates.LastAvailableDate
AND Table2.Item = LastAvailableDates.Item
...戻る
Date Item Qty
---------- ------ ---
2013-01-01 Item 1 10
2013-01-01 Item 2 15
2013-02-01 Item 1 10
2013-02-01 Item 2 15
2013-03-01 Item 1 5
2013-03-01 Item 2 15