我当前正在查询缺少索引的表。
以下是一些示例数据:
id dStartDate
126 2010-04-22 00:00:00.000
127 NULL
128 2010-04-29 00:00:00.000
129 2010-05-03 00:00:00.000
130 NULL
131 NULL
132 NULL
133 2010-04-29 00:00:00.000
134 NULL
135 NULL
136 2010-04-29 00:00:00.000
137 NULL
138 NULL
139 2010-04-29 00:00:00.000
140 NULL
141 2010-04-29 00:00:00.000
142 2010-04-29 00:00:00.000
143 NULL
144 NULL
我使用以下脚本获取缺少的索引:
declare @id int
declare @maxid int
set @id = 1
select @maxid = max(idJCMaster) from _btblJCMaster
declare @IDseq table (id int)
while @id < @maxid --whatever you max is
begin
insert into @IDseq values(@id)
set @id = @id + 1
end
select
s.id
from @IDseq s
left join _btblJCMaster t on s.id = t.idJCMaster
where t.idJCMaster is null
上面的方法很完美,但是,我想查看以前的记录(不为空)的日期,以了解何时删除该记录...
我更改了上面的脚本,使其看起来像这样:
declare @id int
declare @maxid int
set @id = 1
select @maxid = max(idJCMaster) from _btblJCMaster
declare @IDseq table (id int)
while @id < @maxid --whatever you max is
begin
insert into @IDseq values(@id)
set @id = @id + 1
end
select
s.id
, t.dStartDate
from @IDseq s
left join _btblJCMaster t on s.id = t.idJCMaster
我得到的结果看起来像这样:
可以看出,对于那些特定的索引,有时遗失的数量多于记录...
我不太确定如何更改脚本以显示以前的日期(空值之前)。
在此示例中,我的预期结果将是:
请协助取得预期的结果?
非常感谢您的协助!
我猜您这里需要一个滞后窗口功能
SELECT id, ISNULL(dStartDate, LAG(dStartDate) OVER())
FROM YOUR_TABLE;