私は次のようなデータを持っています:

私がする必要があるのは、同じレコードの場合、nullClientIdではない連続した行を(CpIdを使用して)PlaceIdグループ化し、各グループの最初と最後の行を見つけて、DateAdmitted最初の行から値を取得できるようにする必要があります。DateDischarged最後の行の値。したがって、上記のデータは次のように整理してから、必要な値でフィルタリングする必要があります。

上記の例を使用して、私は以下に基づいて欲しいと思いますClientId:
ClientId FirstCpIdInSet DateAdmitted LastCpIdInSet DateDischarged
-----------------------------------------------------------------------------
1967 NULL NULL NULL NULL
1983 45 1986-12-29 45 1987-10-09
1983 47 1990-10-01 49 2009-04-12
1983 52 2009-08-31 52 2009-11-30
1988 62 1997-12-15 65 2000-01-07
ClientIdPlaceId1967は、 nullでない行がないため、結果セットから除外できます。注意すべき他のいくつかのこと:
CpIdこれは、として作成された一時テーブルから取得され、IDENTITYテーブルにはstrictが入力されているORDER BYためCpId、必要な順序で順番に並べられます。- があり、単一の行
PlaceIdが連続している行の場合、は前の行のと同じClientIdである必要があります。DateAdmittedDateDischarged
できればカーソルなしでこれができるようにしたいと思っていますが、2日間困惑した後、理解できません。これはSQLServer2008R2にあります。