November 21, 2017 at 1:36 am
I have data in below format and would like to generate in attached format
Declare @TowerSDGoup as table ( SDgroup varchar(20), Tower varchar(20))
Insert into @TowerSDGoup ( SDgroup, Tower)
Select 'SD1', 'Tower1'
union all
Select 'SD2', 'Tower1'
union all
Select 'SD3', 'Tower2'
union all
Select 'SD4', 'Tower2'
November 21, 2017 at 1:55 am
One method would be by using STUFF and FOR XML PATH:
Let me know if you have any questions.
Thom~
Excuse my typos and sometimes awful grammar. My fingers work faster than my brain does.
Larnu.uk
November 21, 2017 at 3:07 am
Thanks Thom for shortest answer..
Though I was trying my hand on this Declare @T varchar(20)
Declare @SD varchar(20)
Declare @str varchar(100)
Declare @TowerSDGoup as table ( SDgroup varchar(20), Tower varchar(20))
Insert into @TowerSDGoup ( SDgroup, Tower)
Select 'SD1', 'Tower1'
union all
Select 'SD2', 'Tower1'
union all
Select 'SD3', 'Tower2'
union all
Select 'SD4', 'Tower2'
union all
Select 'SD5', 'Tower2'
Declare @Tower as Table ( Tower varchar(20))
Insert into @Tower
Select distinct Tower from @TowerSDGoup
Declare @TSDg as Table (SD varchar(20), T varchar(20))
Declare @FinalTSDg as Table ( T varchar(50), SD varchar(100))
While (Select top 1 1 from @Tower ) >0
BEGIN
SET @str =''
Select top 1 @T = Tower from @Tower
Insert into @TSDg( SD, T )
SElect SDgroup, Tower FROM @TowerSDGoup WHERE Tower =@T
While ( Select top 1 1 from @TSDg)>0
BEGIN
Select top 1 @SD = SD from @TSDg where T =@T
Delete from @TSDg WHere SD = @SD
Insert into @FinalTSDg (T , SD)
Select @T,@str
END
Delete from @Tower Where Tower =@T
END
Select Tower,SD from (
Select row_number() over ( Partition By T order by SD desc)rn,t as Tower, SUBSTRINg(SD,2,len(SD)) AS SD from @FinalTSDg )t
where rn = 1
November 21, 2017 at 3:14 am
I woulnd't recommend a WHILE loop. It'll be far slower, due to it's inherent repetitive nature.
When using SQL, try to think in Datasets, rather than programmatically. SQL is far faster at performing changes, evaluating expressions, etc, at a dataset level than it is at doing it Row By Agonising Row (coined as RBAR).
Thom~
Excuse my typos and sometimes awful grammar. My fingers work faster than my brain does.
Larnu.uk
November 21, 2017 at 3:56 am
Thanks for your guidance
Viewing 5 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy