Maison > base de données > tutoriel mysql > Comment puis-je convertir efficacement les lignes en colonnes dans SQL Server?

Comment puis-je convertir efficacement les lignes en colonnes dans SQL Server?

DDD
Libérer: 2025-01-25 14:42:14
original
660 Les gens l'ont consulté

How Can I Efficiently Convert Rows to Columns in SQL Server?

Méthode de conversion de ligne en colonne efficace dans SQL Server

Dans SQL Server, il existe plusieurs façons de convertir des lignes en colonnes.

Utilisez la fonction PIVOT

La fonction PIVOT peut transposer les données des lignes en colonnes. Voici un exemple de requête utilisant PIVOT :

<code class="language-sql">select Firstname, Amount, PostalCode, LastName, AccountNumber
from
(
  select value, columnname
  from yourtable
) d
pivot
(
  max(value)
  for columnname in (Firstname, Amount, PostalCode, LastName, AccountNumber)
) piv;</code>
Copier après la connexion

Cette requête produira les résultats suivants :

FirstName Amount PostalCode LastName AccountNumber
John 2.4 ZH1E4A Fork 857685

Veuillez noter que la fonction PIVOT peut être moins efficace pour les grands ensembles de données.

Utiliser des fonctions d'agrégation et des expressions CASE

Si PIVOT n'est pas applicable, vous pouvez utiliser des fonctions d'agrégation et des expressions CASE, comme indiqué ci-dessous :

<code class="language-sql">select
  max(case when columnname = 'FirstName' then value end) Firstname,
  max(case when columnname = 'Amount' then value end) Amount,
  max(case when columnname = 'PostalCode' then value end) PostalCode,
  max(case when columnname = 'LastName' then value end) LastName,
  max(case when columnname = 'AccountNumber' then value end) AccountNumber
from yourtable</code>
Copier après la connexion

Cette requête produira les mêmes résultats que la requête PIVOT.

Utiliser plusieurs connexions JOIN

Une autre approche consiste à utiliser plusieurs connexions JOIN, comme indiqué ci-dessous :

<code class="language-sql">select fn.value as FirstName,
  a.value as Amount,
  pc.value as PostalCode,
  ln.value as LastName,
  an.value as AccountNumber
from yourtable fn
left join yourtable a
  on fn.somecol = a.somecol
  and a.columnname = 'Amount'
left join yourtable pc
  on fn.somecol = pc.somecol
  and pc.columnname = 'PostalCode'
left join yourtable ln
  on fn.somecol = ln.somecol
  and ln.columnname = 'LastName'
left join yourtable an
  on fn.somecol = an.somecol
  and an.columnname = 'AccountNumber'
where fn.columnname = 'Firstname'</code>
Copier après la connexion

Veuillez noter que l'utilisation de plusieurs connexions JOIN peut ne pas être efficace pour les grands ensembles de données. La méthode que vous choisissez dépend de vos exigences spécifiques en matière de données et de performances.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal