Maison >base de données >tutoriel mysql >Comment faire pivoter les métadonnées du produit dans SQL Server 2000 à l'aide d'une fonction JOIN et d'agrégation ?

Comment faire pivoter les métadonnées du produit dans SQL Server 2000 à l'aide d'une fonction JOIN et d'agrégation ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-02 18:29:39408parcourir

How to Pivot Product Metadata in SQL Server 2000 using a JOIN and Aggregate Function?

Transformation Pivot à l'aide de SQL Server 2000

Problème :

Votre base de données contient deux tables, Produits et Product Meta, avec les structures suivantes :

Products:
- ProductId
- Name

Product Meta:
- ProductId
- MetaKey
- MetaValue

Vous souhaitez transformer ces données dans un ensemble de résultats qui fait pivoter la colonne MetaValue, en fonction de la colonne MetaKey. L'ensemble de résultats souhaité est :

ProductId | Name | A | B | C

Solution :

Bien que les solutions suggérées précédemment ne soient pas optimales, elles mettent néanmoins en avant l'utilisation de fonctions d'agrégation ou de sous-requêtes pour assurer un regroupement valide. Voici une approche alternative :

SELECT
  P.ProductId,
  P.Name,
  MAX(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A,
  MAX(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B,
  MAX(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C
FROM Products AS P
LEFT JOIN ProductMeta AS PM
  ON PM.ProductId = P.ProductId
GROUP BY
  P.ProductId,
  P.Name;

Cette requête rejoint les tables Products et Product Meta, regroupant les résultats par ProductId et Name. La fonction d'agrégation MAX() est utilisée pour extraire la MetaValue maximale pour chaque MetaKey. Cela garantit que seule la MetaValue la plus récente ou la plus récente pour chaque clé est incluse dans l'ensemble 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!

Déclaration:
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