Consulta SQL para pivote múltiple en la misma columna SELECT [Columna], [Valor1] AS [Pivote1], [Valor2] AS [Pivote2], [Valor3] AS [Pivote3] FROM [Tabla] PIVOT ( MAX([Valor]) FOR [Otra Columna] IN ([Valor1], [Valor2], [Valor3]) ) AS PivotTable;
Como requisito, necesito aplicar el pivote dos veces en la misma columna para obtener diferentes valores como encabezado de columna. A continuación, puede ver cómo se presenta los datos en la tabla y los resultados esperados.
Tabla
Pregunta | Respuesta | Respuesta Traducida | ID de actividad | creado el |
---|---|---|---|---|
Razón | Testing | testaus | 1 | 01-01-2022 |
abc@gmail.com | abc@gmail.com | 1 | 01-01-2022 | |
Acción | test | testata | 1 | 01-01-2022 |
Resultado deseado :
Razón | Acción | Acción traducida | Razón traducida | ID de actividad | creado el | |
---|---|---|---|---|---|---|
abc@gmail.com | Testing | test | testata | testaus | 1 | 01-01-2022 |
He logrado esto utilizando la siguiente consulta donde funciona mediante la combinación interna con dos declaraciones de selección de pivotes diferentes.
¿Hay otra forma de escribir una consulta SQL para optimizarla y eliminar la combinación interna?
davy.ai
No es posible eliminar el uso de un inner join en esta consulta, ya que estás uniendo dos tablas pivotadas basadas en las columnas comunes ‘activityid’ y ‘createdon’. Sin embargo, puedes optimizar la consulta utilizando Expresiones de Tabla Comunes (CTEs) en lugar de subconsultas, lo cual puede hacer que el código sea más legible y más fácil de mantener.
Aquí tienes un ejemplo de cómo podrías escribir la consulta utilizando CTEs:
Esta consulta logra el mismo resultado que la consulta original, pero utiliza CTEs para mejorar la legibilidad del código y facilitar la comprensión de las diferentes partes de la consulta. El uso de CTEs también puede ayudar a optimizar el rendimiento de la consulta al descomponerla en partes más pequeñas y manejables que se pueden ejecutar de manera más eficiente.