Heim >Datenbank >MySQL-Tutorial >Wie transponiere ich eine Tabelle mit mehreren Spalten in SQL Server?

Wie transponiere ich eine Tabelle mit mehreren Spalten in SQL Server?

Barbara Streisand
Barbara StreisandOriginal
2025-01-14 21:11:50595Durchsuche

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

Mehrspaltige Pivot-Methode von SQL Server

Das Konvertieren einer Tabelle in ihre transponierte Form ist in verschiedenen Situationen nützlich. Dieser Artikel konzentriert sich auf die Transponierung einer Tabelle mit mehreren Spalten (A, B usw.) in Microsoft SQL Server.

Pivot-Daten mit UNPIVOT und PIVOT

Um eine Tabelle zu transponieren, können Sie die Funktionen UNPIVOT und PIVOT zusammen verwenden:

  • UNPIVOT: Konvertieren Sie mehrere Spalten in Zeilen und erstellen Sie eine neue Spalte mit dem Namen col, die die Spaltennamen (A, B usw.) enthält, und eine Wertespalte mit den entsprechenden Werten.
  • PIVOT: Konvertieren Sie Spaltenwerte in Spaltenüberschriften und fassen Sie die Wertespalte für jede Überschrift zusammen.

Ein Beispiel ist wie folgt:

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

CROSS APPLY- und VALUES-Methoden für SQL Server 2008 und höher

Für SQL Server 2008 und höher können Sie auch CROSS APPLY in Kombination mit VALUES verwenden, um die Daten zu entpacken:

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

Bewerben Sie sich auf Ihre Anfrage

Wenn Sie die Ergebnisse der aktuellen Abfrage transponieren möchten, können Sie eine ähnliche Methode verwenden:

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

Dadurch werden die Spalten „ACalls“ und „BCalls“ in Zeilen transponiert und Spaltenüberschriften für jeden Wochentag (Mo, Di usw.) erstellt.

Das obige ist der detaillierte Inhalt vonWie transponiere ich eine Tabelle mit mehreren Spalten in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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