Méthode pivot multi-colonnes SQL Server
Convertir un tableau vers sa forme transposée est utile dans diverses situations. Cet article explique comment transposer une table à plusieurs colonnes (A, B, etc.) dans Microsoft SQL Server.
Données pivotées à l'aide de UNPIVOT et PIVOT
Pour transposer un tableau, vous pouvez utiliser les fonctions UNPIVOT et PIVOT ensemble :
Un exemple est le suivant :
<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>
Méthodes CROSS APPLY et VALUES pour SQL Server 2008 et supérieur
Pour SQL Server 2008 et supérieur, vous pouvez également utiliser CROSS APPLY combiné avec VALUES pour décompresser les données :
<code class="language-sql">select * from ( select day, col, value from yourtable cross apply ( values ('A', ACalls),('B', BCalls) ) c (col, value) ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
Appliquer à votre requête
Si vous souhaitez transposer les résultats de la requête en cours, vous pouvez utiliser une méthode similaire :
<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>
Cela transposera les colonnes ACalls et BCalls en lignes et créera des en-têtes de colonnes pour chaque jour de la semaine (Lun, Mar, etc.).
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!