私は 1 日の大半をこの Web サイトや他の多くの Web サイトの閲覧に費やしましたが、まだ問題の解決策を見つけていません。
現在、次の列をプルする MS Access でクエリを実行しようとしています。
問題は、マイルストーンを最新のマイルストーンにする必要があることです。due_date は、このマイルストーンに対応しています。
各マイルストーンには自動番号 ID が入力されており、この ID を使用してクエリをまとめようとしています。
このクエリ:
SELECT E.EID, E.[CN], E.[AN], E.Status, MAX(M.ID) AS Milestone_ID
FROM [Pilot Milestone] AS M, [PP Engagements] AS E, [Pilot Milestone] AS D
WHERE E.EID=M.EID
GROUP BY M.EID, E.EID, E.[CN], E.[AN], E.Status, E.[Estimated Hours]
各 EID の最新のマイルストーン ID を残します。ただし、Due_Dates を追加すると:
SELECT E.EID, E.[CN], E.[AN], E.Status, MAX(M.ID) AS Milestone_ID, M.(Due Date)
FROM [Pilot Milestone] AS M, [PP Engagements] AS E, [Pilot Milestone] AS D
WHERE E.EID=M.EID
GROUP BY M.EID, E.EID, E.[CN], E.[AN], E.Status, E.[Estimated Hours], M.(Due Date)
EID 30 の 2 つの追加レコードを受け取りました。これらは期日がある唯一の 2 つのレコードであり、どちらも最新のマイルストーン ID を反映していません。
また、各 EID には複数のマイルストーンがあるため、期日で行ったのと同じ方法でクエリにマイルストーンの説明を入力すると、同様の問題が発生します。
どんな助けでも大歓迎です。
ありがとう
改訂
次のクエリでは、MS Access 2007 でテストしたばかりのように、重複のない due_dates の結果が得られます。
SELECT E.EID, E.[Client Name], E.[Audit Name], E.Status, MAX(M.ID) AS Milestone_ID, (
SELECT MAX ([Due Date]) FROM [Pilot Milestone] AS M2 WHERE M2.EID = M.EID) AS Due_Date
FROM [Pilot Milestone] AS M, [Potential Pilot Engagements] AS E
WHERE E.EID=M.EID
GROUP BY M.EID, E.EID, E.[Client Name], E.[Audit Name], E.Status, E.[Estimated Hours]
また、集計関数の一部としてマイルストーンの説明を追加する (結果として重複が発生する) か、複数のレコードとエラーが発生するサブクエリに追加することなく、結果にマイルストーンの説明を追加する方法がわかりません。
SELECT E.EID, E.[Client Name], E.[Audit Name], E.Status, MAX(M.ID) AS Milestone_ID, (
SELECT MAX ([Due Date]) FROM [Pilot Milestone] AS M2 WHERE M2.EID = M.EID) AS Due_Date, (
SELECT (Milestone) FROM [Pilot Milestone] AS M3 WHERE M3.EID = M.EID) AS Milestone
FROM [Pilot Milestone] AS M, [Potential Pilot Engagements] AS E
WHERE E.EID=M.EID
GROUP BY M.EID, E.EID, E.[Client Name], E.[Audit Name], E.Status, E.[Estimated Hours]