Solved

How can I display repeating feilds horizontal using pivot

Posted on 2010-08-23
5
327 Views
Last Modified: 2012-05-10
I have this data

ID      Name      Code      Type
1      Sam      205      office
2      Sam      778      home
3      Sam      678      cell
4      Bob      789      office
5      Bob      167      home
6      Tim      556      cell

I want to create a view that will display the data this way

Name      Code1      Type1      Code2      Type2      Code3      Type3
Sam        205         office         778         home          678         cell
Bob        789         office         167         home
Tim                                                                              556         cell


How can I do this using pivot in SQL Server 2005
0
Comment
Question by:vraj20
  • 3
  • 2
5 Comments
 
LVL 41

Expert Comment

by:ralmada
ID: 33503865
try the below:

DECLARE @strSQL varchar(8000) 
DECLARE @COLS VARCHAR(8000) 


SELECT @COLS = 	coalesce(@COLS+',', '') + 
		'max(case when [rn] = ' + rn + ' then [Code] end) as [Code' + cast(rn as varchar) + ']' 
		', max(case when [rn] = ' + rn + ' then [Type] end) as [Type' + cast(rn as varchar) + ']' 

from (
	select distinct row_number() over (partition by Name order by ID) rn from yourtable
) a 

set @strSQL = 'select 	Name, ' + @cols + ' from (select *, row_number() over (partition by Name order by ID) rn from yourtable ) t1 group by Name'

exec(@strSQL)

Open in new window

0
 

Author Comment

by:vraj20
ID: 33505352
'max(case when [rn] = ' + rn + ' then [Code] end) as [Code' + cast(rn as varchar) + ']'

What does rn represent?
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33505418
rn is just a column that I'm creating using the row_number() function to number code and types column like code1, code2, etc....
 
Hope this helps
0
 

Author Comment

by:vraj20
ID: 33511530
Thank you for your assistance. When I run your script I get these error message

Msg 102, Level 15, State 1, Line 7
Incorrect syntax near ', max(case when [rn] = '.
Msg 102, Level 15, State 1, Line 11
Incorrect syntax near 'a'.
0
 
LVL 41

Accepted Solution

by:
ralmada earned 500 total points
ID: 33512072
yep, need a cast there and missed a plus sign.
DECLARE @strSQL varchar(8000) 
DECLARE @COLS VARCHAR(8000) 


SELECT @COLS = 	coalesce(@COLS+',', '') + 
		'max(case when [rn] = ' + rn + ' then [Code] end) as [Code' + cast(rn as varchar) + ']' +
		', max(case when [rn] = ' + rn + ' then [Type] end) as [Type' + cast(rn as varchar) + ']' 

from (
	select distinct cast(row_number() over (partition by Name order by ID) as varchar) rn from yourtable
) a 

set @strSQL = 'select 	Name, ' + @cols + ' from (select *, row_number() over (partition by Name order by ID) rn from yourtable ) t1 group by Name'

exec(@strSQL)

Open in new window

0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
What is the best way to calculate hours worked 5 74
Table create permissions on SQL Server 2005 9 43
date diff with Fiscal Calendar 4 57
Parse this column 6 27
I've encountered valid database schemas that do not have a primary key.  For example, I use LogParser from Microsoft to push IIS logs into a SQL database table for processing and analysis.  However, occasionally due to user error or a scheduled task…
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question