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.

 All Forums
 SQL Server 2008 Forums
 Transact-SQL (2008)
 Row to column

Author  Topic 

GilbertoH
Starting Member

4 Posts

Posted - 2012-11-26 : 18:54:07
I have a table like

NAME DATA
name1 A
name2 B
name1 C
name3 A
name2 D
name1 A

Those two columns, I need to group them on a view like:

NAME Data1 Data2 Data3 Data4 Data5
name1 A C A Null Null
name2 B D Null Null Null
name3 A Null Null Null Null



--
Regards, GilbertoH.

bandi
Master Smack Fu Yak Hacker

2242 Posts

Posted - 2012-11-26 : 23:37:36

DECLARE @tab TABLE(NAME varchaR(10), DATA varchar(3))
INSERT INTO @tab VALUES('name1', 'A'),('name2', 'B'),('name1', 'C'),('name3', 'A'),('name2', 'D'),('name1', 'A')


SELECT distinct t.NAME, STUFF( (SELECT ',' + s.DATA FROM @tab s WHERE s.NAME = t.NAME FOR XML PATH('')), 1, 1, '') as data
INTO #test
FROM @tab t

DECLARE @pivot varchar(8000)
DECLARE @select varchar(8000)

SELECT
@pivot=coalesce(@pivot+',','')+'[DATA'+cast(number+1 as varchar(10))+']'
FROM
master..spt_values where type='p' and
number<=(SELECT max(len(data)-len(replace(data,',',''))) FROM #test)

SELECT
@select='
select p.*
from (
select
name,substring(data, start+2, endPos-Start-2) as token,
''DATA''+cast(row_number() over(partition by name order by start) as varchar(10)) as n
from (
select
name, data, n as start, charindex('','',data,n+2) endPos
from (select number as n from master..spt_values where type=''p'') num
cross join
(
select
name, '','' + data +'','' as data
from
#test
) m
where n < len(data)-1
and substring(data,n+1,1) = '','') as data
) pvt
Pivot ( max(token)for n in ('+@pivot+'))p'

EXEC(@select)

DROP TABLE #test


--
Chandu
Go to Top of Page

srimami
Posting Yak Master

160 Posts

Posted - 2012-11-27 : 07:12:18
Hi,

Please refer to the following link for more information on Pivot and Unpivot that might help to solve questions like you posted.

http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

Go to Top of Page
   

- Advertisement -