タイトルがあいまいで申し訳ありません。検索方法がわからないか、この質問をしてください。
TableAがあるとしましょう:
RowIDFkIdランク日付 ID1 A 1 2013-3-1 ID2 A 2 2013-3-2 ID3 A 2 2013-3-3 ID4 B 3 2013-3-4 ID5 A 1 2013-3-5
FkIdごとに1行を返すビューを作成する必要があります。行は最大ランクと最大日付である必要があります。したがって、FkId "A"の場合、クエリは"ID3"の行を返します。
サブクエリを使用して単一の行を返すことができました。最初にMAX(Rank)を取得し、次にFkIdとRankでMAX(Date)グループを取得する別のクエリに参加します。
SELECTTableA。* (FkId、MAX(Rank)ASランクをTableA GROUP BY FkIdから選択)s1 内部結合(FkId、Rank、MAX(Date)AS Date FROM TableA GROUP BY FkId、Rankを選択)s2 ON s1.FkId = s2.FkId AND s1.Rank = s2.Rank s2.FkId = TableA.FkId AND s2.Rank = TableA.Rank AND s2.Date=TableA.Dateの内部結合TableA
同じ結果を達成するより効率的なクエリはありますか?見てくれてありがとう。
編集:最後の回答以降にID5を追加しました。通常のMAX(rank)、MAX(Date)GROUP BY FkIdを試した場合、「A」の場合はAになります。2; 2013-3-5。この結果は、RowIdと一致しません。