Maison >base de données >tutoriel mysql >Comment puis-je pivoter les lignes dans des colonnes à l'aide de la fonction de pivot de SQL Server, gérant les numéros de semaine statiques et dynamiques?

Comment puis-je pivoter les lignes dans des colonnes à l'aide de la fonction de pivot de SQL Server, gérant les numéros de semaine statiques et dynamiques?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-25 12:26:08393parcourir

Fonction PIVOT de SQL Server : convertissez les lignes en colonnes, gérez les numéros de semaine statiques et dynamiques

Contexte :

Vous disposez d'un tableau temporaire avec plusieurs colonnes comprenant le numéro de magasin, le numéro de semaine et le total correspondant. Les numéros de semaine sont dynamiques, ce qui rend difficile la conversion des données dans un format tabulaire.

Solution :

Pour utiliser la fonction PIVOT dans SQL Server pour convertir des lignes en colonnes, procédez comme suit :

1. Numéro de semaine statique :

Si le numéro de la semaine est connu, utilisez la requête codée en dur suivante :

<code class="language-sql">SELECT *
FROM
(
  SELECT store, week, xCount
  FROM yt
) src
PIVOT
(
  SUM(xcount)
  FOR week IN ([1], [2], [3])
) piv;</code>

2. Numéro de semaine dynamique :

Si le numéro de semaine est dynamique, utilisez du SQL dynamique :

<code class="language-sql">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);</code>

Résultat :

Les deux requêtes renvoient un tableau croisé dynamique avec le numéro du magasin à gauche et le numéro de la semaine en haut. Chaque cellule contient la somme de "xCount" pour le magasin et le numéro de semaine correspondants.

<code>| STORE |   1 |   2 |   3 |
---------------------------
|   101 | 138 | 282 | 220 |
|   102 |  96 | 212 | 123 |
|   105 |  37 |  78 |  60 |
|   109 |  59 |  97 |  87 |</code>

How Can I Pivot Rows into Columns Using SQL Server's PIVOT Function, Handling Both Static and Dynamic Week Numbers?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn