Opération T-SQL PIVOT sans fonctions d'agrégation
Contrairement aux opérations PIVOT, qui nécessitent généralement des fonctions d'agrégation, les transformations PIVOT peuvent également être effectuées sans fonctions d'agrégation. Cela peut survenir dans des scénarios spécifiques où la reconstruction des données est requise sans agrégation.
Considérez la forme suivante :
CustomerID | DBColumnName | Data |
---|---|---|
1 | FirstName | Joe |
1 | MiddleName | S |
1 | LastName | Smith |
1 | Date | 12/12/2009 |
2 | FirstName | Sam |
2 | MiddleName | S |
2 | LastName | Freddrick |
2 | Date | 1/12/2009 |
3 | FirstName | Jaime |
3 | MiddleName | S |
3 | LastName | Carol |
3 | Date | 12/1/2009 |
L'objectif est de faire pivoter ces données vers les résultats suivants :
CustomerID | FirstName | MiddleName | LastName | Date |
---|---|---|---|---|
1 | Joe | S | Smith | 12/12/2009 |
2 | Sam | S | Freddrick | 1/12/2009 |
3 | Jaime | S | Carol | 12/1/2009 |
Pour y parvenir en utilisant PIVOT sans fonction d'agrégation, vous pouvez utiliser la requête suivante :
<code class="language-sql">SELECT CustomerID, MIN(CASE DBColumnName WHEN 'FirstName' THEN Data END) AS FirstName, MIN(CASE DBColumnName WHEN 'MiddleName' THEN Data END) AS MiddleName, MIN(CASE DBColumnName WHEN 'LastName' THEN Data END) AS LastName, MIN(CASE DBColumnName WHEN 'Date' THEN Data END) AS Date FROM table GROUP BY CustomerId;</code>
Cette requête exécute une instruction case dans une opération PIVOT pour sélectionner la valeur minimale de chaque DBColumnName pour un CustomerID donné. Puisqu’il n’existe qu’une seule ligne de données pour chaque combinaison CustomerID et DBColumnName, la fonction MIN renvoie la valeur requise.
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!