次の(簡略化された)構造のテーブルがあります。
Order, Status, Sequence
1000, New, 0
1000, Viewed, 1
1000, Shipped, 2
1001, New, 0
1002, New, 0
1002, Viewed, 1
1002, New, 2
各注文の最大シーケンス番号を持つ行を返すSELECTステートメントが必要です。したがって、上記の例では、結果のデータセットは次のようになります。
1000, Shipped, 2
1001, New, 0
1002, New, 2
これを行う簡単な方法はありますか?それができるWHERE式を作成できないようです。
いくつかのコメントに返信するには:
- この問題が発生する場所で使用されているDMBSには、MS-SQL、MySQL、Oracle、Accessなどがあります。
- 開発中のシステムは組織内の他のデータベースからのデータを統合しているため、非常に多くのDMBSが関係しています。このため、予約語である列名を制御することはできませんが、名前をエスケープする必要があることは認識しています。
- サブクエリの多くの組み合わせ、GROUP BY、DISTINCT、MAX、およびCOUNTが試行されましたが成功しませんでした。クエリ結果は常にExcelで終了するため、Excelですべての行を取得し、重複を並べ替えて削除しています。私の好みは、SQLクエリに作業を行わせることで、このステップをスキップすることです。