の最初の出現まで、すべての行を選択する:|値は|次のデータについて、与えられた値
日チェック
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1
2006 | 5 | 0
2005年| 5 | 0
2004 | 5 | 1
2003 | 5 | 1
2002 | 5 |私は、チェック欄の0が最初に出現するまでのバック2009からすべての行を選択する必要が1
:
2009をチェック| |値を
日| 5 | 1
2008 | 5 | 1
2007 | 5 | 1
私はラグ機能を試しましたが、月に戻って確認することができました。
私はOracle 10gを使用しています。
は、事前に
UPDATEありがとう:
すべては私のテストデータセットは、パフォーマンスの違いについて何を言っても小さくて、うまく動作しているようです。あなたのすべての入力をありがとう!
これが唯一の内側のORDER BYがあなたにも最初のバージョンを使用することがあり、その場合には、インデックス、によって満たされた場合は、「スキャンを停止」でしょう。それ以外の場合、Oracleは内部結果セットを完全にソートします。 –
そうでしょう。しかし、このソリューションでは、効率的に作業するためには(日付)に1つのインデックスだけが必要ですが、MAX()ソリューションでは(チェック、日付)にインデックスが必要です。 – Quassnoi