Чтобы сохранить мою чистоту и честь в качестве придурка базы данных, я хочу обновить набор datetime и float, у которого есть несколько нулей в столбце float, так что каждое нулевое значение будет заменено предыдущим (datetime) ненулевым значение.
Моя среда mssql 2k8R2.
Надеюсь, следующий фрагмент достаточно подробно объясняет мои условия победы.
Приветствия и спасибо.
create table #datesAndValues(
[Date] datetime,
Val float);
create table #resultsShouldLookLikeThis(
[Date] datetime,
Val float);
insert into #datesAndValues
values
('1/8/11',1.1),
('1/7/11',null),
('1/6/11',1.2),
('1/5/11',null),
('1/4/11',null),
('1/3/11',1.3),
('1/2/11',null),
('1/1/11',null);
/*
set based code (no loops!!!) goes here to set nulls
in the above table to the last known good (not null) value,
thereby making it look like the following table.
*/
insert into #resultsShouldLookLikeThis
values
('1/8/11',1.1),
('1/7/11',1.2),
('1/6/11',1.2),
('1/5/11',1.3),
('1/4/11',1.3),
('1/3/11',1.3),
('1/2/11',null),
('1/1/11',null);
--this will tell us if it worked
select 'In old but not new' as [WhichTable], o.*
from (select * from #datesAndValues
except select * from #resultsShouldLookLikeThis) o
union all
select 'In new but not old' as [WhichTable], n.*
from (select * from #resultsShouldLookLikeThis
except select * from #datesAndValues) n;
drop table #datesAndValues;
drop table #resultsShouldLookLikeThis;