Author |
Topic |
masterdineen
Aged Yak Warrior
550 Posts |
Posted - 2013-04-10 : 11:08:47
|
I have three columns in my data below.ref, status, year.I have managed to set year to 0 when status is 'canceled',but I also want to set other years to 0 of the same ref.see below example data.declare @sample table (ref int,status nvarchar(12),Year int)insert @sampleselect '33', 'member', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1998' union allselect '40', 'member', '1998' union allselect '40', 'Canceled', '1998' union allselect '40', 'Canceled', '1998' union allselect '40', 'member', '1998' union allselect '40', 'Canceled', '1998' union allselect '40', 'Canceled', '1998' union allselect '40', 'member', '1998' union allselect '40', 'Canceled', '1998' union allselect '40', 'member', '2004' union allselect '33', 'Canceled', '2004' union allselect '33', 'member', '2004' union allselect '33', 'Canceled', '2004' union allselect '33', 'member', '2009' union allselect '33', 'Canceled', '2009' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '1998' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'member', '2005' union allselect '33', 'Canceled', '2005' union allselect '33', 'member', '1998' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'Canceled', '1998' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1998' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'Canceled', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2002' union allselect '33', 'member', '2003' union allselect '33', 'member', '2003' union allselect '33', 'member', '2003' union allselect '33', 'member', '2004' union allselect '33', 'member', '2004' union allselect '33', 'member', '2004' union allselect '33', 'member', '2004' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2005' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '2006' union allselect '33', 'member', '1999' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2000' union allselect '33', 'member', '2001' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '2000' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '2001' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'member', '1999' union allselect '33', 'Canceled', '1999' union allselect '33', 'member', '1999' select ref, status,[year],case when [status] = 'Canceled' then '0' else year end as 'cancel','0' as 'Desired Result' from @sample where [YEAR] = 1999order by YEAR |
|
Bustaz Kool
Master Smack Fu Yak Hacker
1834 Posts |
Posted - 2013-04-10 : 14:27:59
|
Not clear on the requirements here. Are you trying to set Year to '0' if any Status = 'canceled' within the same Ref? Using your data, every Ref = '33' should have its Year set to '0' since the second row of your sample data is marked as "clanceled'. Is that the task at hand?BTW: Some sample expected output would clarify your need.=================================================There are two kinds of light -- the glow that illuminates, and the glare that obscures. -James Thurber |
|
|
MIK_2008
Master Smack Fu Yak Hacker
1054 Posts |
Posted - 2013-04-10 : 14:37:36
|
--> "but I also want to set other years to 0 of the same ref."remove the where condition, where [YEAR] = 1999CheersMIK |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2013-04-11 : 02:20:10
|
[code]select ref, status,[year],case when sum(case when [status] = 'Canceled' then 1 else 0 end)over(partition by ref) >0 then '0' else year end as 'cancel'from @sampleorder by YEAR[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/https://www.facebook.com/VmBlogs |
|
|
|
|
|