Pivot T-SQL : aucune fonction d'agrégation nécessaire
Dans certains cas, vous devrez peut-être convertir les données d'un tableau au format pivot sans utiliser de fonctions d'agrégation telles que SUM ou COUNT. Cet exemple montre une manière unique d'utiliser l'opérateur PIVOT lorsque les fonctions d'agrégation ne sont pas requises.
Supposons qu'il existe une table source contenant des informations sur le client :
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 |
Le résultat cible est un tableau croisé dynamique affichant les informations client dans des colonnes séparées :
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 sans utiliser de fonctions d'agrégation, vous pouvez utiliser la requête T-SQL 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 utilise la fonction MIN dans une instruction CASE pour sélectionner la valeur minimale pour chaque colonne en fonction de DBColumnName. La clause "GROUP BY" permet de regrouper les résultats par CustomerID.
Bien que cette approche puisse paraître lourde et inefficace par rapport à l'utilisation de fonctions d'agrégation, elle peut offrir une plus grande flexibilité dans certaines situations où les fonctions d'agrégation ne sont pas appropriées (par exemple lorsqu'il s'agit de valeurs uniques ou distinctes). Assurez-vous d'évaluer les besoins spécifiques de votre requête et de choisir l'approche la plus appropriée pour la situation donnée.
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!