次のデータを含むテーブルがあるとします。
- テーブル名 [データ]。
- PrimaryID: テーブルのプライマリ ID。
- ParentID: テーブルはそれ自体を参照します。これは PrimaryID に対する FK 制約です。
DateTime: これが最後に更新された時刻。
PrimaryID ParentID Date 1 null 1/1/2013 2 1 1/2/2013 3 1 1/3/2013 4 null 1/4/2013 5 4 1/5/2013 6 null 1/6/2013
次のような結果を選択したい:
PrimaryID ParentID
3 1
5 4
6 6
各「グループ」(同じ ParentID とその親を持つすべてのエントリとして定義) について、最新の行を選択し、null の ParentID (通常、この行が親であることを示します) を置き換えたいと考えています。行自身の PrimaryID。
このようなクエリの生成をどこから始めればよいか、本当に迷っています。
次のような内部選択があります。
(SELECT PrimaryID, ISNULL(ParentID, PrimaryID) as ParentID, Date FROM [Data])
これは開始するのに正しい方向のように見えますが、ここからどこへ行くべきかわかりません。