次のようなテーブルがあるとします。
ProjectSts:
ID Proj Status LogDate FundsRemain LogBy
60 2 Quit 1/5/2013 Yes QOVM
59 2 Quit 1/4/2013 Yes YZYO
58 2 Quit 1/3/2013 No XYZ
54 2 Start 1/1/2013 NA QOVM
50 1 Quit 12/2/2012 Yes UUOI
48 1 Quit 12/1/2012 Yes OIJP
現在私がやっているのは、へのSQL文SELECT * FROM ProjSts WHERE Status = 'Quit' AND FundsRemain = 'Yes'
です。次に、別のアプリケーション内で、結果として得られるすべてのプロジェクト ステータス エントリを手動で読み取り、各プロジェクトの時系列で最初の (最も早い) ステータスを選択して、新しいテーブルにエクスポートできるようにします。
私が疑問に思っているのは、可能であれば、これをすべて SQL ステートメント内で実現する方法です。私は SQL Group By に関する多くのチュートリアルを見てきましたが、それらはすべて、各プロジェクトのすべてのエントリの数値フィールドを合計したり、平均したりしたい場合に何をすべきかを示しています。そして、INリストを生成する方法を示すサブクエリに関するいくつかのチュートリアルを見てきましたが、別の一意の値ごとに特定の基準を満たす、並べ替え後の最初のレコードのリストだけを生成するものは見たことがありません分野。
理想的には、上記の例のデータから、結果は次のようになります。
ID Proj Status LogDate FundsRemain LogBy
48 1 Quit 12/1/2012 Yes OIJP
59 2 Quit 1/4/2013 Yes YZYO
申し訳ありませんが、私は最も高度な SQL ユーザーではありませんが、外部アプリケーションに依存して戻って選択結果を再処理する代わりに、SQL 内で実行できれば素晴らしいと思います。私が実際に必要としているもの。
任意の助けをいただければ幸いです (PS: これは ctree データベースからのものであり、現在、最初のデータ抽出に Crystal Reports 2008 を使用しています)