I need to update subsequent rows in a table based on date and column values without using a cursor in SQL Server 2008 R2 -
this sql shows sample dataset working with
create table #tmp1 ( account varchar(18), caseid varchar(18), dt datetime, person varchar(100), updated varchar(18) ) insert #tmp1 select 'myacccount', '12345', '1/1/13', 'me', 'someone' insert #tmp1 select 'myacccount', '12346', '2/1/13', null, null insert #tmp1 select 'myacccount', '12347', '3/1/13', null, null insert #tmp1 select 'myacccount', '12348', '4/1/13', null, null insert #tmp1 select 'myacccount', '12349', '5/1/13', null, null insert #tmp1 select 'myacccount', '12350', '6/1/13', null, null insert #tmp1 select 'myacccount', '12351', '7/1/13', 'myself', 'someone' insert #tmp1 select 'myacccount', '12352', '8/1/13', null, null insert #tmp1 select 'myacccount', '12353', '9/1/13', null, null insert #tmp1 select 'myacccount', '12354', '10/1/13', null, null insert #tmp1 select 'myacccount', '12355', '11/1/13', 'i', 'someone' insert #tmp1 select 'myacccount', '12356', '12/1/13', null, null insert #tmp1 select 'myacccount', '12357', '1/1/14', 'irene', 'someone' insert #tmp1 select 'myacccount', '12358', '2/1/14', null, null insert #tmp1 select 'myacccount', '12359', '3/1/14', null, null insert #tmp1 select 'myacccount', '12360', '4/1/14', null, null insert #tmp1 select 'myacccount', '12361', '5/1/14', 'olivia', 'someone' insert #tmp1 select 'myacccount', '12362', '6/1/14', null, null insert #tmp1 select 'myacccount', '12363', '7/1/14', null, null insert #tmp1 select 'myacccount', '12364', '8/1/14', null, null insert #tmp1 select 'myacccount', '12365', '9/1/14', null, null insert #tmp1 select 'myacccount', '12366', '10/1/14', null, null insert #tmp1 select 'myacccount', '12367', '11/1/14', null, null insert #tmp1 select 'myacccount', '12368', '12/1/14', 'izzy', 'someone' select * #tmp1 order account, dt what need update person column in each row has null value in updated column matches previous row regardless of value in person column.
however have been asked not use cursor. have been trying figure out way without cursor far have not been successful.
has been able without cursor?
you can this, assuming id's unique , sequential without gaps:
update #tmp1 set person = (select person #tmp t2 t1.caseid = t2.caseid + 1) #tmp t1
Comments
Post a Comment