Maison > base de données > tutoriel mysql > Comment utiliser Dynamic SQL PIVOT pour la transformation de données avec la gestion de chaînes NULL ou vides ?

Comment utiliser Dynamic SQL PIVOT pour la transformation de données avec la gestion de chaînes NULL ou vides ?

Barbara Streisand
Libérer: 2025-01-25 18:42:11
original
929 Les gens l'ont consulté

Utilisez le pivot SQL dynamique pour la conversion de données, le traitement nul ou la chaîne vide

Cet article présente comment convertir les données du tableau au format de la perspective de catégorie, où le poste est représenté comme une chaîne nulle ou vide. Ceci peut être implémenté par Dynamic SQL Pivot Query.

Utilisez un pivot pour effectuer une conversion dynamique

Les étapes suivantes décrivent le processus de création d'une requête de pivot dynamique:

  1. Créez une table temporaire: Créez une table temporaire pour stocker les données d'origine et définir les colonnes nécessaires.
  2. Générer la liste dynamique:
  3. différentes catégories sont utilisées pour interroger avec la sous-femerie et les connecter aux chaînes avec des virgules séparées. Créer des requêtes de pivot:
  4. Les listes générées sont utilisées comme paramètres de pivot pour créer une requête de pivot.
  5. La fonction de polymérisation récupère la valeur maximale de chaque catégorie. Exécutez la requête: MAX() Effectuez des requêtes de pivot dynamique pour générer le résultat après la conversion.
  6. Résultats
  7. La table générée comprendra une colonne qui représente la seule catégorie, et la date est utilisée comme ligne. La valeur vide peut être traitée en fonction de la sortie requise via la chaîne nulle ou vide.
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '


execute(@query)</code>
Copier après la connexion
Exemple de résultats:

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