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
Libérer: 2025-01-25 12:26:08
original
352 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal