顧客ごとに数十の行があり、それぞれに日付とさまざまなステータスを表すいくつかの列があるテーブルを使用しています。特定の列 (特に 0 から 1 または 1 から 0、以下のステータス列を参照) で変更が行われた行を取得することにのみ関心があります。
row_number() over (partition by customer_id, status order by date)
ステータスが0と1の間を行ったり来たりするので、単純には使えません。
これが私がやろうとしていることのサンプルです (この例には 2 つの異なる顧客 ID があることに注意してください):
元のテーブル
Row CustomerID Status Date
1 ABC 0 3/12/2013
2 ABC 0 3/31/2013
3 ABC 1 4/13/2013
4 ABC 1 4/15/2013
5 ABC 1 5/17/2013
6 ABC 0 6/25/2013
7 ABC 0 6/28/2013
8 XYZ 0 8/2/2013
9 XYZ 1 5/10/2013
10 XYZ 0 5/18/2013
11 XYZ 1 8/23/2013
12 XYZ 1 9/7/2013
目的のクエリ出力
Customer ID Status Date
ABC 1 4/13/2013
ABC 0 6/25/2013
XYZ 1 5/10/2013
XYZ 0 5/18/2013
XYZ 1 8/23/2013