Maison > base de données > tutoriel mysql > Comment transposer une table avec plusieurs colonnes dans SQL Server ?

Comment transposer une table avec plusieurs colonnes dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-14 21:11:50
original
594 Les gens l'ont consulté

How to Transpose a Table with Multiple Columns in SQL Server?

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 :

  • UNPIVOT : Convertissez plusieurs colonnes en lignes, en créant une nouvelle colonne nommée col, qui contient les noms de colonnes (A, B, etc.) et une colonne de valeurs contenant les valeurs correspondantes.
  • PIVOT : Convertissez les valeurs de colonne en en-têtes de colonne et résumez la colonne de valeurs pour chaque en-tête.

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal