関心のある 3 つのテーブルと、それらから次の出力を生成するクエリがあります。各フィールドには、デモンストレーションのために元のテーブルを表す文字が先頭に追加されます。代わりに、最新のデータのみを含むレポートが必要です。つまり、MAX(EntryDate) で返される行のみが必要ですが、これを達成する方法がわかりません。、集計などを試しましHAVING
たが、成功しませんでした。私のアプローチが間違っているか、構文的に何かが欠けています。
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 13 NULL A 2012-03-25 15:32:00
26 42 17 820044444 B 2012-03-27 09:48:00
26 42 14 820056789 C 2012-03-28 12:19:00
望ましい結果:
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 14 820056789 C 2012-03-28 12:19:00
少し追加の背景として、r.FirstID は、すべてが相互に関連するレコードのグループを表すため、グループごとに、最新のデータを含むレコードのみを返したいと考えています。
これが私がこれまでに持っている私のクエリです:
select s.ID,r.FirstID,m.ID,m.PartNum,m.Revision,r.EntryDate from StatusLog s
left join (select FirstID,PartInfoID from Request where PartInfoID is not null group by FirstID,PartInfoID) r on s.FirstID= r.FirstID
--required filtering here? Or move this extra join to the inner query?
left join PartInfo m on r.PartInfoID = m.ID
DBMS に SQL Server を使用しています。