Heim > Datenbank > MySQL-Tutorial > Wie kann ich Zeilen in SQL Server effizient in Spalten konvertieren?

Wie kann ich Zeilen in SQL Server effizient in Spalten konvertieren?

DDD
Freigeben: 2025-01-25 14:42:14
Original
660 Leute haben es durchsucht

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

Effiziente Zeilen-zu-Spalten-Konvertierungsmethode in SQL Server

In SQL Server gibt es mehrere Möglichkeiten, Zeilen in Spalten umzuwandeln.

Verwenden Sie die PIVOT-Funktion

Die PIVOT-Funktion kann Daten von Zeilen in Spalten transponieren. Hier ist eine Beispielabfrage mit 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>
Nach dem Login kopieren

Diese Abfrage gibt die folgenden Ergebnisse aus:

FirstName Amount PostalCode LastName AccountNumber
John 2.4 ZH1E4A Fork 857685

Bitte beachten Sie, dass die PIVOT-Funktion bei großen Datensätzen möglicherweise weniger effizient ist.

Aggregatfunktionen und CASE-Ausdrücke verwenden

Wenn PIVOT nicht anwendbar ist, können Sie Aggregatfunktionen und CASE-Ausdrücke verwenden, wie unten gezeigt:

<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>
Nach dem Login kopieren

Diese Abfrage liefert die gleichen Ergebnisse wie die PIVOT-Abfrage.

Mehrere JOIN-Verbindungen verwenden

Ein anderer Ansatz besteht darin, mehrere JOIN-Verbindungen zu verwenden, wie unten gezeigt:

<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>
Nach dem Login kopieren

Bitte beachten Sie, dass die Verwendung mehrerer JOIN-Verbindungen für große Datenmengen möglicherweise nicht effizient ist. Welche Methode Sie wählen, hängt von Ihren spezifischen Daten- und Leistungsanforderungen ab.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in SQL Server effizient in Spalten konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage