あらかじめ助けていただきありがとうございます。私はMS SQL Server 2008で作業していて、少なくとも4つの "0"が行内にあるAuto_Manualカラムの値が "0"の最初のローからデータをキャプチャしようとしています。列が同じ値を4回連続して持つ場合、値の最初の行を返します
Lot DateTimeStamp Auto_Manual rn
----------------------------------------
abc123 1/4/2017 2:08 1 1
abc123 1/4/2017 2:10 1 2
abc123 1/4/2017 2:12 1 3
abc123 1/4/2017 2:14 1 4
abc123 1/4/2017 2:16 1 5
abc123 1/4/2017 2:18 1 6
abc123 1/4/2017 2:20 1 7
abc123 1/4/2017 2:22 1 8
abc123 1/4/2017 2:24 0 1
abc123 1/4/2017 2:26 1 9
abc123 1/4/2017 2:28 1 10
abc123 1/4/2017 2:30 1 11
abc123 1/4/2017 2:32 0 2
abc123 1/4/2017 2:34 1 12
abc123 1/4/2017 2:36 1 13
abc123 1/4/2017 2:38 0 3
abc123 1/4/2017 2:40 0 4
abc123 1/4/2017 2:42 0 5
abc123 1/4/2017 2:44 0 6
abc123 1/4/2017 2:46 0 7
私が探している結果は次のとおりです:
Lot DateTimeStamp Auto_Manual rn
----------------------------------------
abc123 1/4/2017 2:38 0 3
これまでのところ、私が行うことができましたすべてがで仕切られた行番号を取得しているここに私のデータのサンプルがありますロットおよびAuto_Manual列:
select
Lot
,DateTimeStamp
,Auto_Manual
,ROW_NUMBER() over (partition by Lot, Auto_Manual
order by DateTimeStamp) rn
from dbo.Table) tmp
order by Lot, DateTimeStamp
私はAuto_Manual = 0または1のいずれかのためにRN = 1行を選択することができるよ、それは私がやって探しているまさにではありません。私は、Auto_Manual列に4つの連続する "0"がある最初の行だけを必要とします。代わりに、最初のAuto_Manualの値が "0"であることが分かります.8分後に値が "0"のままであることに注意してください。間に「0」しかない場合にのみ有効です。
ご協力いただければ幸いです。
おかげ
ジェームズを、助けのためにあなたをとても感謝しています。 SQL Server 2008を使用していることを指定しておく必要があります.Loos_valueは2012年に付属の関数です。OPにその情報を含めないと申し訳ありません。潜在的な回避策はありますか? – Djones12
ああ、私はタグを見ただけです...もちろん、最後の値を内側のセレクトに置き換えることはできますが、それはパフォーマンスにとってはあまり効果がありません。 1つのオプションは、日付のためのグループを使用し、分を取ってそれに基づいて残りのデータを見つけることができます –
2008年に提供した2番目のソリューションは、3つの値を返します:1/4/2017 2:24 || 1/4/2017 2:32 || 1/4/2017 2:38だからそれは正しくグループ化し、各グループのmin rnを選択しているように見えます。しかし残念なことに、それはすべてのグループの分を選択しています。これがなぜなのか? – Djones12