Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
ashley.sql
Constraint Violating Yak Guru
299 Posts |
Posted - 2010-08-18 : 10:19:00
|
----I have a table like this. There are rowids in the table. Row 2 to 5 should be updated with FRUIT which is the category above them----and when category changes the next blank rows should be populate with that category. So Row 7 to 10 should have WEIGHT.We can use WHERE LEN(CATEGORY)>1 THOUGH.----THIS IS WHAT THE TABLE IS DECLARE @temp TABLE(ROWID INT IDENTITY(1,1), CATEGORY VARCHAR(20), SALES VARCHAR(20))INSERT @temp SELECT 'FRUIT', '' UNION ALLSELECT '', 'ABOVE 10,000' UNION ALLSELECT '', 'ABOVE 20,000' UNION ALLSELECT '', 'ABOVE 30,000' UNION ALLSELECT '', 'ABOVE 40,000' UNION ALLSELECT 'WEIGHT', '' UNION ALLSELECT '', '10' UNION ALLSELECT '', '20' UNION ALLSELECT '', '30' UNION ALLSELECT '', '40' UNION ALLSELECT '', '50' UNION ALLSELECT '', '60' UNION ALLSELECT 'COLOR', '' UNION ALLSELECT '', 'BLACK' UNION ALLSELECT '', 'RED' UNION ALLSELECT '', 'GREY' UNION ALLSELECT '', 'GREEN' UNION ALLSELECT 'PERCENTAGE', '' UNION ALLSELECT '', '>10%' UNION ALLSELECT '', '>20%' UNION ALLSELECT '', '>30%' SELECT * from @temp-- --THIS IS WHAT TABLE SHOULD LOOK LIKE AFTER UPDATE. NO HARDCODING. THE CATEGORIES CAN CHANGE SO CAN ROWS WITH EACH CATEGORYDECLARE @temp1 TABLE(ROWID INT IDENTITY(1,1), CATEGORY VARCHAR(20), SALES VARCHAR(20))INSERT @temp1 SELECT 'FRUIT', '' UNION ALLSELECT 'FRUIT', 'ABOVE 10,000' UNION ALLSELECT 'FRUIT', 'ABOVE 20,000' UNION ALLSELECT 'FRUIT', 'ABOVE 30,000' UNION ALLSELECT 'FRUIT', 'ABOVE 40,000' UNION ALLSELECT 'WEIGHT', '' UNION ALLSELECT 'WEIGHT', '10' UNION ALLSELECT 'WEIGHT', '20' UNION ALLSELECT 'WEIGHT', '30' UNION ALLSELECT 'WEIGHT', '40' UNION ALLSELECT 'WEIGHT', '50' UNION ALLSELECT 'WEIGHT', '60' UNION ALLSELECT 'COLOR', '' UNION ALLSELECT 'COLOR', 'BLACK' UNION ALLSELECT 'COLOR', 'RED' UNION ALLSELECT 'COLOR', 'GREY' UNION ALLSELECT 'COLOR', 'GREEN' UNION ALLSELECT 'PERCENTAGE', '' UNION ALLSELECT 'PERCENTAGE', '>10%' UNION ALLSELECT 'PERCENTAGE', '>20%' UNION ALLSELECT 'PERCENTAGE', '>30%' SELECT * from @temp1-----------------------------------------------------------------------------------------------Ashley Rhodes |
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2010-08-18 : 10:41:11
|
declare @Category varchar(20) UPDATE @temp SET @Category = Category = CASE WHEN Category = '' then @category else category endJimCheck out Visakh's quirky updateEveryday I learn something that somebody else already knew |
 |
|
ashley.sql
Constraint Violating Yak Guru
299 Posts |
Posted - 2010-08-18 : 10:47:10
|
Well that does work but I don't understand the logic. Can you please explain how this thing is working-----------------------------------------------------------------------------------------------Ashley Rhodes |
 |
|
MSquared
Yak Posting Veteran
52 Posts |
Posted - 2010-08-18 : 10:47:38
|
There's something called a quirky update you can use. I put it in a transaction so it can be rolled back for testing. Try thisDECLARE @temp TABLE(ROWID INT IDENTITY(1,1), CATEGORY VARCHAR(20), SALES VARCHAR(20))INSERT @temp SELECT 'FRUIT', '' UNION ALLSELECT '', 'ABOVE 10,000' UNION ALLSELECT '', 'ABOVE 20,000' UNION ALLSELECT '', 'ABOVE 30,000' UNION ALLSELECT '', 'ABOVE 40,000' UNION ALLSELECT 'WEIGHT', '' UNION ALLSELECT '', '10' UNION ALLSELECT '', '20' UNION ALLSELECT '', '30' UNION ALLSELECT '', '40' UNION ALLSELECT '', '50' UNION ALLSELECT '', '60' UNION ALLSELECT 'COLOR', '' UNION ALLSELECT '', 'BLACK' UNION ALLSELECT '', 'RED' UNION ALLSELECT '', 'GREY' UNION ALLSELECT '', 'GREEN' UNION ALLSELECT 'PERCENTAGE', '' UNION ALLSELECT '', '>10%' UNION ALLSELECT '', '>20%' UNION ALLSELECT '', '>30%' SELECT * from @tempdeclare @category varchar(20)begin tranupdate @temp set @Category = Category = case when @Category is null then category when Category is null or Category = '' then @Category else category endOPTION (MAXDOP 1) select * from @temprollback tran |
 |
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
|
X002548
Not Just a Number
15586 Posts |
|
|
|
|
|
|