Maison > base de données > tutoriel mysql > Comment faire pivoter une table et concaténer des colonnes dans SQL Server ?

Comment faire pivoter une table et concaténer des colonnes dans SQL Server ?

Mary-Kate Olsen
Libérer: 2025-01-02 17:04:40
original
758 Les gens l'ont consulté

How to Pivot a Table and Concatenate Columns in SQL Server?

Concaténation de tableaux croisés dynamiques et de colonnes

Question :

Comment puis-je transformer une table de base de données avec la structure suivante :

ID    TYPE   SUBTYPE    COUNT   MONTH
 1      A      Z          1       7/1/2008
 1      A      Z          3       7/1/2008
 2      B      C          2       7/2/2008
 1      A      Z          3       7/2/2008
Copier après la connexion

dans un tableau avec ce qui suit structure :

ID    A_Z   B_C   MONTH
1     4     0     7/1/2008
2     0     2     7/2/2008
1     0     3     7/2/2008
Copier après la connexion

où TYPE et SUBTYPE sont concaténés pour former de nouvelles colonnes (par exemple, "A_Z"), et COUNT est additionné pour faire correspondre les valeurs ID et MOIS ?

Réponse :

SQL Server 2005 fournit un opérateur PIVOT qui permet la transformation décrite dans le question. Voici une explication détaillée :

  1. Générer le code pivot : Déterminez les combinaisons distinctes de valeurs TYPE et SUBTYPE. Par exemple, ['A_Z'].
  2. Construire Dynamic SQL : Utilisez le SQL dynamique pour générer une requête qui inclut l'opérateur PIVOT.
DECLARE @sql AS varchar(max);
SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM(COUNT)
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
';
Copier après la connexion
  1. Exécuter Dynamic SQL : Exécutez la requête SQL générée pour obtenir le sortie.

Cette solution exploite le SQL dynamique pour construire la requête PIVOT basée sur les combinaisons uniques de valeurs TYPE et SUBTYPE, offrant une approche sans maintenance pour gérer plusieurs types et sous-types dans la base de données.

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!

source:php.cn
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