


Comment faire pivoter des données tabulaires dans SQL en concaténant des colonnes et en additionnant des valeurs ?
Conversion de données tabulaires en tableau croisé dynamique à l'aide de SQL : concaténation de colonnes
Dans la gestion de bases de données, les tableaux croisés dynamiques impliquent la transformation des données à partir d'un format orienté colonnes à un format orienté ligne, "retournant" efficacement le tableau. Cet article décrit un scénario dans lequel vous souhaitez faire pivoter un tableau comportant plusieurs colonnes en une seule colonne avec les valeurs concaténées des colonnes d'origine.
Supposons que vous disposiez d'un ensemble de données avec des colonnes pour ID, TYPE, SOUS-TYPE, COUNT et MOIS, disposé comme suit :
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
L'objectif est de convertir ces données dans un tableau croisé dynamique, où les colonnes TYPE et SOUS-TYPE sont concaténés dans une nouvelle colonne et les valeurs COUNT sont additionnées pour chaque combinaison unique d'ID et de MOIS. Le résultat attendu est :
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
Solution PIVOT SQL Server
SQL Server 2005 offre de puissants opérateurs PIVOT et UNPIVOT qui simplifient le pivotement des données. L'exemple de code suivant illustre la technique PIVOT :
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) DECLARE @select_list AS varchar(max) SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']' ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']' FROM ( SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE FROM stackoverflow_159456 ) AS PIVOT_CODES 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 ' EXEC (@sql)
La technique SQL dynamique utilisée dans ce code génère automatiquement l'instruction PIVOT basée sur la combinaison distincte de valeurs TYPE et SUBTYPE, évitant ainsi le codage en dur et rendant le code sans entretien.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?
