Author |
Topic |
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-06-03 : 09:29:31
|
Hi,I have table structures and example data like below.How do i update Col3 where Col2 is N and Col3 is NULL, my conditions are : Get Col3's value where Col2 is Y and Update Col3 until Col2 not equal to D value. Please see output result.Declare @tbl1 table (Col1 INT,Col2 varchar (50),Col3 varchar(50))INSERT INTO @tbl1SELECT 1, 'Y','ABC1001'INSERT INTO @tbl1SELECT 2, 'N',NULLINSERT INTO @tbl1SELECT 3, 'N',NULLINSERT INTO @tbl1SELECT 4, 'N',NULLINSERT INTO @tbl1SELECT 5, 'Y','ABC1002'INSERT INTO @tbl1SELECT 6, 'N',NULLINSERT INTO @tbl1SELECT 7, 'Y','ABC1003'INSERT INTO @tbl1SELECT 8, 'Y','ABC1004'SELECT * FROM @tbl1Output looks like this:Col1 Col2 Col31 Y ABC10012 N ABC10013 N ABC10014 N ABC10015 Y ABC10026 N ABC10027 Y ABC10038 Y ABC1004 |
|
nigelrivett
Master Smack Fu Yak Hacker
3385 Posts |
Posted - 2011-06-03 : 09:38:18
|
select t.col1, t.col2,col3 = case when t.col2 = 'Y' then t.col3 else (select top 1 col3 from @tbl1 t2 where t2.col1 <= t.col1 and t2.col3 is not null) endfrom @tbl1 t==========================================Cursors are useful if you don't know sql.SSIS can be used in a similar way.Beer is not cold and it isn't fizzy. |
 |
|
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-06-03 : 10:03:43
|
nigelrivett, please rows 5 and 6 this has to be ABC1002.i added more data, please see.Declare @tbl1 table (Col1 INT,Col2 varchar (50),Col3 varchar(50))INSERT INTO @tbl1SELECT 1, 'Y','ABC1001'INSERT INTO @tbl1SELECT 2, 'N',NULLINSERT INTO @tbl1SELECT 3, 'N',NULLINSERT INTO @tbl1SELECT 4, 'N',NULLINSERT INTO @tbl1SELECT 5, 'Y','ABC1002'INSERT INTO @tbl1SELECT 6, 'N',NULLINSERT INTO @tbl1SELECT 7, 'Y','ABC1003'INSERT INTO @tbl1SELECT 8, 'Y','ABC1004'INSERT INTO @tbl1SELECT 9, 'Y','ABC1005'INSERT INTO @tbl1SELECT 10, 'N',NULLINSERT INTO @tbl1SELECT 11, 'N',NULLINSERT INTO @tbl1SELECT 12, 'Y','ABC1006'INSERT INTO @tbl1SELECT 13, 'N',NULLINSERT INTO @tbl1SELECT 14, 'Y','ABC1007'INSERT INTO @tbl1SELECT 15, 'N',NULLselect t.col1, t.col2,col3 = case when t.col2 = 'Y' then t.col3 else (select top 1 col3 from @tbl1 t2 where t2.col1 <= t.col1 and t2.col3 is not null) endfrom @tbl1 t |
 |
|
nigelrivett
Master Smack Fu Yak Hacker
3385 Posts |
Posted - 2011-06-03 : 10:14:47
|
oopsselect t.col1, t.col2,col3 = case when t.col2 = 'Y' then t.col3 else (select top 1 t2.col3 from @tbl1 t2 where t2.col1 <= t.col1 and t2.col3 is not null order by t2.col1 desc) endfrom @tbl1 t==========================================Cursors are useful if you don't know sql.SSIS can be used in a similar way.Beer is not cold and it isn't fizzy. |
 |
|
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-06-03 : 11:38:19
|
thanks nigelrivett, great job. |
 |
|
|
|
|