1

購入の予測に使用される Access データベースで作業しており、有効な価格と行の合計を含むレコードのリストを取得するクエリを作成しようとしています。

価格と数量を組み合わせようとすると問題が発生します。次のテーブルがあります

予測データを含むテーブル (このクエリに関係のない列は省略)

need_rows
ID  product_id  qty use_date
----------------------------
1   1           100 1.1.2014
2   1           50  15.1.2014
... 

そして価格表

prices
ID  product_id  price   valid_from
----------------------------------
1   1           1       1.12.2013
2   1           2       24.12.2013
3   1           5       10.1.2014
... 

クエリの結果は次のようになります。

result of query
product_id  use_date    qty price   sum
---------------------------------------
1           1.1.2014    100 2       200
1           15.1.2014   50  5       250
...

つまり、need_rows の use_date と price の valid_from 日付に基づいて、各行に有効な価格を取得する必要があります。有効な価格とは、valid_from の日付が use_date と同じか最新のものです。

以下は、私が試したアプローチの1つです。

SELECT prices.price
FROM prices
WHERE (((prices.product_id)=[product_id]) AND ((prices.valid_from)=
(SELECT Max(prices.valid_from) AS valid
FROM prices
WHERE (((prices.product_id)=[product_id]) AND ((prices.valid_from)<=[use_date]));).));

どんな助けでも大歓迎です!

4

1 に答える 1

3
SELECT need_rows.Id
, need_rows.qty
, need_rows.product_id
, (SELECT TOP 1 price 
FROM prices 
WHERE need_rows.product_id = prices.product_id 
AND need_rows.use_date >= prices.valid_from 
ORDER BY prices.valid_from DESC) AS currentprice

FROM need_rows;
于 2013-09-18T10:38:15.287 に答える