私は全体的にSQLに少し慣れていないので、ここまでたどり着くことができましたが、今は少し行き詰まっています。
私は 2 つのテーブルを持っています。1 つは「船」から「オイル タイプ」のインデックスだけです。もう一方の表「ROB」は、船に残っている油の量です。
毎月、ROB テーブルに新しいレコードを取得する場合と取得しない場合があります。
私が必要としているのは、特定の船のそれぞれの異なるオイルの種類と、最新の ROB がある場合はそれです。
次のクエリは、オイルの種類ごとにすべての ROB を取得し、最新のものだけが必要であることを除いて、ほとんど私が望むものです。
PARAMETERS QueryShipID Short;
SELECT Oils.OilID, Oils.ShipID, ROB.LastROB, ROB.Received, ROB.DateReceived, ROB.PortReceived, ROB.TotalUsed, ROB.CurrentROB, ROB.DateSent
FROM
(SELECT DISTINCT OilID, ShipID
FROM [Index]
WHERE (((ShipID)=[QueryShipID])))
AS Oils
LEFT JOIN
(SELECT ShipID, OilId, LastROB, Received, DateReceived, PortReceived, TotalUsed, CurrentROB, DateSent
FROM [Oil ROB])
AS ROB
ON (Oils.ShipID = ROB.ShipID) AND (Oils.OilID = ROB.OilID);
私がする必要があるのは、オイルの種類ごとに最後の DateSent を取得することです。
集計クエリの結果を元のテーブルに結合することを提案しているように見える Max 関数の使用に関するチュートリアルをいくつか見つけました。ただし、これを機能させることができないようで、巨大で面倒なクエリが作成されます。
誰かがこれを行うための最良の方法についていくつかのヒントを持っていれば、私は非常に感謝しています.
理想的には、これを行った後、特定の日付の前に最後の ROB を取得できるように、日付のパラメーターを追加したいと思います。これは比較的簡単なはずですが、回答に関係がある場合に備えて含めます。
ありがとうございます。
デイブ