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