Author |
Topic |
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-04-21 : 17:02:51
|
How do i update Col4, please see output value.Declare @tbl1 table (Col1 varchar(50),Col2 varchar(50),Col3 varchar (50),Col4 varchar (255))INSERT INTO @tbl1SELECT 'A001','A001','XXXX',NULLINSERT INTO @tbl1SELECT 'A002','A002','aaa',NULLINSERT INTO @tbl1SELECT 'A003','A002','bbb',NULLINSERT INTO @tbl1SELECT 'A004','A002','ccc',NULLOutput :A001,A001,XXXX,XXXXA002,A002,aaa,aaaA003,A003,bbb,aaabbbA004,A004,ccc,aaabbbccc |
|
reddymrk
Starting Member
6 Posts |
Posted - 2011-04-21 : 17:49:44
|
you can use isnull() function or coalesce to replace the null value with any other value.Ex: select col1, col2, col3, isnull (col4,'aaaaa') from table1Ex: select col1, col2, col3, coalesce(col4,'aaaaa') from table1 |
 |
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2011-04-21 : 18:36:33
|
Declare @tbl1 table(Col1 varchar(50),Col2 varchar(50),Col3 varchar (50),Col4 varchar (255))INSERT INTO @tbl1SELECT 'A001','A001','XXXX',NULLINSERT INTO @tbl1SELECT 'A002','A002','aaa',NULLINSERT INTO @tbl1SELECT 'A003','A002','bbb',NULLINSERT INTO @tbl1SELECT 'A004','A002','ccc',NULL SELECT DISTINCT s1.col1,s1.col2,s1.col3, REPLACE(STUFF((SELECT TOP 100 PERCENT ','+ s2.col3 FROM @tbl1 AS s2 WHERE s2.col2 = s1.col2 and right(s1.col1,1) > right(s2.col1,1) - 1 FOR XML PATH('')),1, 1, '') , ',','') AS CODESFROM @tbl1 AS s1But there's gotta be a more efficient way.JimEveryday I learn something that somebody else already knew |
 |
|
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-04-21 : 18:50:33
|
i need to update on Col4, how do i update? |
 |
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2011-04-21 : 19:34:24
|
Declare @tbl1 table(Col1 varchar(50),Col2 varchar(50),Col3 varchar (50),Col4 varchar (255))INSERT INTO @tbl1SELECT 'A001','A001','XXXX',NULLINSERT INTO @tbl1SELECT 'A002','A002','aaa',NULLINSERT INTO @tbl1SELECT 'A003','A002','bbb',NULLINSERT INTO @tbl1SELECT 'A004','A002','ccc',NULLUPDATE TSET col4 = codesFROM@tbl1 TINNER JOIN(SELECT DISTINCT s1.col1,s1.col2,s1.col3,REPLACE(STUFF((SELECT TOP 100 PERCENT ','+ s2.col3FROM @tbl1 AS s2WHERE s2.col2 = s1.col2 and right(s1.col1,1) > right(s2.col1,1) - 1FOR XML PATH('')),1, 1, ''), ',','') AS CODESFROM @tbl1 AS s1) t2 on t.col1 = t2.col1select * from @tbl1 JimEveryday I learn something that somebody else already knew |
 |
|
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2011-04-22 : 10:40:55
|
i have a problems please see the resultDeclare @tbl1 table(Col1 varchar(50),Col2 varchar(50),Col3 varchar (50),Col4 varchar (255))INSERT INTO @tbl1SELECT 'A001','A001','XXXX',NULLINSERT INTO @tbl1SELECT 'A0011','A001','yyyy',NULLINSERT INTO @tbl1SELECT 'A002','A002','aaa',NULLINSERT INTO @tbl1SELECT 'A003','A002','bbb',NULLINSERT INTO @tbl1SELECT 'A004','A002','ccc',NULLUPDATE TSET col4 = codesFROM@tbl1 TINNER JOIN(SELECT DISTINCT s1.col1,s1.col2,s1.col3,REPLACE(STUFF((SELECT TOP 100 PERCENT ','+ s2.col3FROM @tbl1 AS s2WHERE s2.col2 = s1.col2 and right(s1.col1,1) > right(s2.col1,1) - 1FOR XML PATH('')),1, 1, ''), ',','') AS CODESFROM @tbl1 AS s1) t2 on t.col1 = t2.col1select * from @tbl1 |
 |
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2011-04-22 : 11:03:13
|
I can only go by the rules and examples you gave me. WHERE s2.col2 = s1.col2 and right(s1.col1,1) > right(s2.col1,1) - 1will have to change, or you'll have to somehow order the rows exactly as you want them and use the row_number() operator to join on.JimEveryday I learn something that somebody else already knew |
 |
|
|
|
|