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>
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>
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>
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!