假设我有一个包含以下数据的表。
- 表名 [数据]。
- 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])
这看起来是正确的开始方向,但我不知道从哪里开始。