Maison >base de données >tutoriel mysql >Comment faire pivoter les données dans SQL Server 2000 à l'aide de l'agrégation conditionnelle ?
Pivotement des données dans SQL Server 2000
Le pivotement des données fait référence au processus de transformation d'un ensemble de données d'un format vertical orienté colonnes vers un format format horizontal orienté lignes. En d'autres termes, cela vous permet de faire pivoter les données dans un tableau afin que les colonnes deviennent des lignes et vice versa.
Considérez les deux tableaux suivants :
Produits
ProductId | Name |
---|---|
1 | Product A |
2 | Product B |
Produit Meta
ProductId | MetaKey | MetaValue |
---|---|---|
1 | A | Value A for Product A |
1 | B | Value B for Product A |
1 | C | Value C for Product A |
2 | A | Value A for Product B |
2 | B | Value B for Product B |
2 | C | Value C for Product B |
Vous souhaitez obtenir un ensemble de résultats qui affiche les noms de produits sous forme de lignes et les clés méta sous forme de colonnes, avec les méta-valeurs correspondantes dans chaque cellule :
ProductName | Meta A | Meta B | Meta C |
---|---|---|---|
Product A | Value A for Product A | Value B for Product A | Value C for Product A |
Product B | Value A for Product B | Value B for Product B | Value C for Product B |
Pour réaliser ce pivot, vous pouvez utiliser une combinaison d'agrégation conditionnelle et de l'instruction CASE dans un SELECT déclaration :
SELECT P.ProductId, P.Name, MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS MetaA, MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS MetaB, MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS MetaC FROM Products AS P INNER JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
Cette requête regroupera correctement les lignes par ID et nom de produit et récupérera les méta-valeurs souhaitées pour chaque clé.
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!