Tengo datos de cuestionario en SQL Server 2008, que quiero transponer a una matriz.
Vi varias publicaciones sobre el mismo tema, pero simplemente no me hago pivotar.Columnas dinámicas pivote, sin agregación
dadas son las tablas siguientes:
Question table
Answer table
Customer table
las columnas:
[CustomerID]
, [QuestionName_1]
, .., [QuestionName_n]
< - dinámica número de columnas de interrogación)
Los datos:
CustomerID
, Answer_1
, .., Answer_n
El código para recuperar las columnas:
DECLARE @columns VARCHAR(8000)
SELECT @columns = COALESCE(@columns + ',[' + cast(QuestionName as varchar) + ']',
'[' + cast(QuestionName as varchar)+ ']')
FROM Answer A
INNER JOIN Question Q ON A.QuestionID = Q.QuestionID
INNER JOIN Customer C ON A.CustomerID = C.CustomerID
GROUP BY Q.QuestionName
SET @columns = '[CustomerID],' + @columns
DECLARE @query VARCHAR(8000)
SET @query = 'Some PIVOT query without aggregation'
EXECUTE(@query)
La idea inicial fue tomado de consulta pivots with dynamic columns.
¿Se puede hacer y cómo sería la consulta pivotante?
pd: no quiero usar la clasificación con un número máximo de columnas.
Saludos,
Michel
En su ejemplo, ¿qué tipo de datos tiene el campo 'choice'? Tengo un campo varchar que contiene la respuesta a la pregunta. –
Es un 'varchar' si nos fijamos en el SQL Fiddle, se mostrará la estructura de la tabla. – Taryn
Lo tengo trabajando, con MIN (QuestionName). ¡No esperaba eso! Gracias por su ayuda Azul :). –