Tengo una mesa como esta ...
CustomerID DBColumnName Data
--------------------------------------
1 FirstName Joe
1 MiddleName S
1 LastName Smith
1 Date 12/12/2009
2 FirstName Sam
2 MiddleName S
2 LastName Freddrick
2 Date 1/12/2009
3 FirstName Jaime
3 MiddleName S
3 LastName Carol
3 Date 12/1/2009
Y quiero esto ...
¿Es esto posible con PIVOT?
CustomerID FirstName MiddleName LastName Date
----------------------------------------------------------------------
1 Joe S Smith 12/12/2009
2 Sam S Freddrick 1/12/2009
3 Jaime S Carol 12/1/2009
sql
sql-server
tsql
pivot
pivot-without-aggregate
ctrlShiftBryan
fuente
fuente
si, pero por qué !!??
fuente
Pivot
en mi consulta, luego cambié a esto y miré el plan de ejecución para ejecutar ambos juntos. ¡Este enfoque costó 8% y el enfoque Pivot tomó 92%!Warning: Null value is eliminated by an aggregate or other SET operation
fuente
SELECT
declaración debajo del CTE podría haber especificado el nombre de la tabla original.Editar: he escrito esto sin un editor y no he ejecutado el SQL. Espero que captes la idea.
fuente
Ok, perdón por la pobre pregunta. Gbn me puso en el camino correcto. Esto es lo que estaba buscando en una respuesta.
Luego tuve que usar una instrucción while y construir la declaración anterior como un varchar y usar dynmaic sql.
Usando algo como esto
Tener un @fulltext para construir usando un ciclo while y seleccionar los nombres de columna distintos de la tabla. Gracias por las respuestas
fuente
El OP no necesitaba pivotar sin agregación, pero para aquellos de ustedes que vienen aquí para saber cómo ver:
consulta cte parametrizada sql
La respuesta a esa pregunta implica una situación en la que se necesita pivote sin agregación, por lo que un ejemplo de hacerlo es parte de la solución.
fuente
Prueba esto:
fuente
Esto debería funcionar:
fuente
Aquí hay una excelente manera de crear campos dinámicos para una consulta dinámica:
- resumir valores en una tabla tmp
--- ver los campos generados
fuente