Maison >base de données >tutoriel mysql >Comment transposer des tables en SQL à l'aide de UNPIVOT et PIVOT ?
Transposition de table SQL : application des fonctions UNPIVOT et PIVOT
La transposition d'une table en SQL peut être réalisée en utilisant une combinaison de fonctions UNPIVOT et PIVOT. La fonction UNPIVOT convertit les colonnes en lignes, tandis que la fonction PIVOT convertit les lignes en colonnes.
Données UNPIVOT
La fonction UNPIVOT est utilisée pour convertir plusieurs colonnes en une seule colonne. Dans l'exemple, les colonnes A et B doivent être développées. La requête suivante illustre ce processus :
<code class="language-sql">select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv;</code>
Cette requête créera une nouvelle table avec trois colonnes : jour, col et valeur. La colonne col contiendra le nom de la colonne (A ou B) et la colonne valeur contiendra la valeur correspondante de la colonne développée.
Données PIVOT
La fonction PIVOT est utilisée pour convertir des lignes en colonnes. Dans cet exemple, les valeurs du jour (Lun, Mar, Mer, Jeu, Vendredi) doivent être converties en colonnes :
<code class="language-sql">select * from ( select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
La requête finale produira le résultat souhaité :
<code>Value | Mon | Tue | Wed | Thu | Fri -------|-----|-----|-----|-----|----- A | 1 | 3 | 5 | 7 | 9 B | 2 | 4 | 6 | 8 | 0</code>
Appliquer la solution à votre requête
Pour appliquer cette solution à votre requête spécifique, vous pouvez la modifier comme suit :
<code class="language-sql">select * from ( select LEFT(datename(dw,datetime),3) as DateWeek, col, value from DataTable cross apply ( values ('A', ACalls), ('B', BCalls) ) c (col, value) ) src pivot ( sum(value) for dateweek in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
Cette requête transformera les données de votre DataTable au format souhaité.
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!