Maison > base de données > tutoriel mysql > Comment puis-je faire pivoter des données dans SQL Server 2000 pour transformer des données basées sur des lignes en un format basé sur des colonnes ?

Comment puis-je faire pivoter des données dans SQL Server 2000 pour transformer des données basées sur des lignes en un format basé sur des colonnes ?

Barbara Streisand
Libérer: 2024-12-31 18:41:11
original
647 Les gens l'ont consulté

How Can I Pivot Data in SQL Server 2000 to Transform Row-Based Data into a Column-Based Format?

Pivotement des données dans SQL Server 2000 : une explication détaillée

SQL Server 2000 fournit une fonctionnalité puissante appelée pivotement qui permet aux utilisateurs de transformer les données de un format basé sur les lignes vers un format basé sur les colonnes. Cela peut être utile pour les scénarios dans lesquels vous devez résumer les données sur plusieurs colonnes ou créer une vue matricielle des données.

Énoncé du problème :

Dans un cas particulier, un utilisateur dispose de deux tables :

  • Produits : Contient des informations de base sur le produit telles que ProductId et Nom.
  • Méta du produit : Stocke les métadonnées du produit avec des colonnes telles que MetaKey et MetaValue.

L'utilisateur a besoin d'un ensemble de résultats qui fait pivoter la colonne MetaValue de la Table Meta Product basée sur la colonne MetaKey, avec les colonnes ProductId et Name de la table Products comme ligne en-têtes.

Solution optimale :

Pour réaliser cette transformation, vous pouvez utiliser la requête SQL suivante :

SELECT P.ProductId, P.Name
    , MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A
    , MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B
    , MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C
FROM Products AS P
JOIN ProductMeta AS PM
    ON PM.ProductId = P.ProductId
GROUP BY P.ProductId, P.Name
Copier après la connexion

Explication :

  • La clause SELECT précise les colonnes à inclure dans le résultat set.
  • La fonction d'agrégation MIN() est utilisée pour renvoyer la valeur minimale de chaque MetaKey dans chaque groupe de ProductId et Name.
  • L'expression CASE est utilisée pour déterminer quelle colonne (A, B ou C) à remplir en fonction de la valeur MetaKey.
  • La clause GROUP BY spécifie les colonnes qui définissent les lignes du résultat set.

Remarque :

L'utilisation d'une clause GROUP BY est essentielle dans ce scénario pour garantir que les lignes sont correctement regroupées. Ne pas utiliser une clause GROUP BY entraînerait un résultat échelonné. De plus, chaque colonne non incluse dans la clause GROUP BY doit être enveloppée dans une fonction d'agrégation (dans ce cas, MIN()).

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