2

顧客および部品ごとの最新の PRICE を検索するクエリを実行しようとしています。私のパラメーターは、This_Customer、This_Part、および This_Date です。null のままのパラメーターは、そのフィールドのすべての値を返す必要があります。

表1

ID  |  Customer  |  Part  |  BegDate   |  Price
101    1            A        1/1/2013     $1
102    2            A        2/1/2013     $2
103    2            A        3/1/2013     $3
104    1            B        4/1/2013     $4
105    2            B        5/1/2013     $5

次の 2 つのクエリを実行することで、顧客、部品、および日付ごとに適切なレコードを見つけることができましたが、価格を除外した場合にのみ機能します。

最初のクエリは、<=0 条件で DateDiff 関数を使用して、This_Date より前のすべての日付を検索します。

クエリ 1「DaysSinceQuery」:

SELECT DateDiff("d",This_Date,BegDate) AS DaysSince, Table1.Part, Table1.Customer, Table1.BegDate, Table1.Price, Table1.ID
FROM Table1
WHERE (((DateDiff("d",This_Date,BegDate))<=0) AND ((Table1.Part) Like IIf(This_Part<>"",This_Part,"*")) AND ((Table1.Customer) Like IIf(This_Customer<>"",This_Customer,"*")));

2 番目のクエリは、Max 関数を使用して、This_Date からの日数が最も少ないレコードを検索します (ゼロに最も近い負の DaysSince 値)。

クエリ 2「NearestDateQuery」:

SELECT Max(DaysSinceQuery.DaysSince) AS NearestDate, Table1.Part, Table1.Customer
FROM Table1 INNER JOIN DaysSinceQuery ON Table1.ID = DaysSinceQuery.ID
GROUP BY Table1.Part, Table1.Customer;

NearestDateQuery の結果に影響を与えずに、Table1.Price 値を NearestDateQuery に追加するにはどうすればよいですか? 簡単な解決策があるはずのようですが、私はそれを手に入れることができません。

さらに明確にするために、このクエリがどのように機能するかを示す多数の例を以下に示します。

助けてくれてありがとう!

QUERY EXAMPLE 1
This_Customer     2
This_Part         A
This_Date         2/15/2013

ID  |  Customer  |  Part  |  BegDate   |  Price
102    2            A        2/1/2013     $2


QUERY EXAMPLE 2
This_Customer     NULL
This_Part         A
This_Date         2/15/2013

ID  |  Customer  |  Part  |  BegDate   |  Price
102    2            A        2/1/2013     $2


QUERY EXAMPLE 3
This_Customer     2
This_Part         NULL
This_Date         5/15/2013

ID  |  Customer  |  Part  |  BegDate   |  Price
103    2            A        3/1/2013     $3
105    2            B        5/1/2013     $5


QUERY EXAMPLE 4
This_Customer     2
This_Part         A
This_Date         NULL

ID  |  Customer  |  Part  |  BegDate   |  Price
102    2            A        2/1/2013     $2
103    2            A        3/1/2013     $3


QUERY EXAMPLE 5
This_Customer     NULL
This_Part         A
This_Date         NULL

ID  |  Customer  |  Part  |  BegDate   |  Price
101    1            A        1/1/2013     $1
102    2            A        2/1/2013     $2
103    2            A        3/1/2013     $3


QUERY EXAMPLE 6
This_Customer     NULL
This_Part         NULL
This_Date         4/15/2013

ID  |  Customer  |  Part  |  BegDate   |  Price
103    2            A        3/1/2013     $3
104    1            B        4/1/2013     $4


QUERY EXAMPLE 7
This_Customer     2
This_Part         NULL
This_Date         NULL

ID  |  Customer  |  Part  |  BegDate   |  Price
102    2            A        2/1/2013     $2
103    2            A        3/1/2013     $3
105    2            B        5/1/2013     $5
4

1 に答える 1