"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 las filas en columnas en SQL Server utilizando la función Pivot?

¿Cómo convertir las filas en columnas en SQL Server utilizando la función Pivot?

Publicado el 2025-03-22
Navegar:347

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

Convierta filas a columnas usando la función Pivot en el servidor SQL

pregunta

Las tablas de pivote en SQL Server proporcionan una forma poderosa de transponer los datos de las filas a las columnas. Sin embargo, los usuarios pueden encontrar desafíos al construir la consulta correcta.

Solución

Use la función Pivot para valores de columna conocidos:

Para valores de columna predefinidos (en este caso el número de semanas), puede usar la función PIVOT directamente:

select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;

Genere dinámicamente valores de columna de perspectiva:

Para manejar valores de columna desconocidos (como semanas dinámicas), se puede usar una combinación de funciones dinámicas de SQL y ventana:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ','   QUOTENAME(Week) 
                    from yt
                    group by Week
                    order by Week
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT store,'   @cols   ' from 
             (
                select store, week, xCount
                from yt
            ) x
            pivot 
            (
                sum(xCount)
                for week in ('   @cols   ')
            ) p '

execute(@query);

resultado:

ambos métodos producen el mismo resultado:

| | | |
Ú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