"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo convertir de manera eficiente las columnas en filas en SQL Server?

¿Cómo convertir de manera eficiente las columnas en filas en SQL Server?

Publicado el 2025-04-13
Navegar:156

How Can I Efficiently Convert Columns to Rows in SQL Server?

Guía en dependencia de la conversión de columna en el servidor SQL

Cuando el procesamiento de tablas que contienen una gran cantidad de columnas métricas, convertir estas columnas en filas es muy beneficioso para fines de análisis e informes. Esta transformación implica la reconstrucción de los datos para crear nuevas tablas con diferentes esquemas.

Declaración de problemas

Considere la siguiente estructura de la tabla:

[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]

El objetivo es convertir estas columnas métricas en filas, creando así una nueva tabla con el siguiente esquema:

[ID] [EntityId] [IndicatorName] [IndicatorValue]
]

solución usando Unpivot

Una solución elegante para lograr esta tarea es aprovechar la función no vivocot. La sintaxis de Unpivot es la siguiente:

UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))

En este ejemplo, la columna Untivot representa el valor del indicador (por ejemplo, "Indicador1", "Indicador2", etc.), y la columna Pivot representa el nombre de la columna en sí. La siguiente consulta ilustra cómo usar Unpivot:

select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;

realizando esta consulta, la columna métrica se convertirá en filas y el nombre y el valor métrico se llenarán con la nueva columna.

Alternativas

Además de Unpivot, hay otras formas de convertir columnas en filas:

  • Cross Aplicar usando unión a todos: Este método implica usar Cross Aplicar y Union para especificar explícitamente cada nombre y valor métrico.
  • Cross Aplicar usando valores: es similar al método anterior, pero la cláusula de valores se usa en la aplicación cruzada.
  • Dynamic sql: Para situaciones con una gran cantidad de columnas indicadoras, puede usar SQL dinámico para generar automáticamente las declaraciones de consulta.

La elección de una solución depende de las necesidades específicas y la versión de SQL Server utilizada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3