Solved

Turn multiple columns into rows

Posted on 2009-04-08
3
580 Views
Last Modified: 2012-05-06
I have a survey website that collects data and the answers to the questions are stored in a table so that each questionID and answer is in its own row in a database table.

What I want to do is kinda complicated and I KNOW I can do it but I am having a brain freeze currently.

I have the query below that returns a question and an answer from a table (the number of questions/answers is dynamic).  The query below only returns one persons questions/answers (for info - if I comment out the line "AND ID.ItemID = '160'" it will return ALL the questions/answers).

I uploaded a spreadsheet that has how it is coming from the query and how I want it.

How do I do this?  Then once I do it with this one persons answers to these questions how can I get it to work for ALL users (comment out this:AND ID.ItemID = '160')

I can use any sort of code in TSQL and a Stored procedure to do it, create a dynamic query, etc.  I looked at Pivot Tables but either do not understand them or it will not work for what I want it to do.

If you need more details/more examples let me know.

This is only for ONE persons answers to their questions,


Select * 

From (

Select cast(row_number() over (order by QT.DisplayOrder, QT.QuestionID) as varchar(5000)) + '. ' + QT.QuestionText as Question, 

	Case When PVL.PropertyDescription IS NULL THEN P.PropertyValue ELSE PVL.PropertyDescription END as QuestionAnswer

From Property P 

Inner Join ItemData ID ON P.ItemID = ID.ItemID

Inner Join QuestionTable QT ON QT.QuestionID = P.PropertyCode 

Left Outer Join PropertyValueLookup PVL ON PVL.PropertyCode = QT.PropertyCode AND 

	PVL.PropertyValueID = Case When ISNUMERIC(P.PropertyValue) = '1' Then P.PropertyValue Else PVL.PropertyValueID END 

Where QT.TypeID = '8'

AND ID.ItemID = '160'

--AND QT.QUestionID = '9'
 

) as R

Open in new window

Help.xls
0
Comment
Question by:brad2575
  • 2
3 Comments
 
LVL 15

Accepted Solution

by:
spprivate earned 500 total points
ID: 24100577
Here is a link which helped me do this.Basically you need to create a stored proc
and pass the parameters

http://p2p.wrox.com/sql-server-2000/24916-pivot-table.html
0
 
LVL 16

Author Comment

by:brad2575
ID: 24100639
This looks like it would work for a single table and a single value only.  I could alter it to work with my Join statement above but not sure about the multiple fields?

0
 
LVL 16

Author Closing Comment

by:brad2575
ID: 31568184
Gave you a C only because it was not what I was looking for but you still tried to help out.  I went with a SP and a temp tables.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Confronted with some SQL you don't know can be a daunting task. It can be even more daunting if that SQL carries some of the old secret codes used in the Ye Olde query syntax, such as: (+)     as used in Oracle;     *=     =*    as used in Sybase …
This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed

706 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now