Heim >Datenbank >MySQL-Tutorial >Wie konvertiere ich Zeilen in SQL Server mithilfe der PIVOT-Funktion in Spalten?

Wie konvertiere ich Zeilen in SQL Server mithilfe der PIVOT-Funktion in Spalten?

Barbara Streisand
Barbara StreisandOriginal
2025-01-25 12:32:10660Durchsuche

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

Verwenden Sie die Pivot -Funktion im SQL -Server, um die Zeile in Spalten zu konvertieren

Frage

Die Tabelle zur Datenperspektive in SQL Server bietet eine leistungsstarke Methode, die von der Zeile in die Liste übertragen werden kann. Benutzer können jedoch vor Herausforderungen stoßen, wenn sie korrekte Abfragen erstellen.

Lösung

Popot -Funktion für bekannte Spaltenwerte:

Für die vordefinierten Spaltenwerte (die Anzahl der Wochen in diesem Beispiel) können Sie die Pivot -Funktion direkt verwenden:

dynamisch erzeugte Perspektivenspalten:

<code class="language-sql">select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;</code>
Um den unbekannten Spaltenwert (z. B. die Anzahl der dynamischen Wochen) zu verarbeiten, kann die Kombination des dynamischen SQL und der Fensterfunktion verwendet werden:

<:> Ergebnis:

Beide Methoden erzeugen das gleiche Ergebnis:
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(Week) 
                    from yt
                    group by Week
                    order by Week
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT store,' + @cols + ' from 
             (
                select store, week, xCount
                from yt
            ) x
            pivot 
            (
                sum(xCount)
                for week in (' + @cols + ')
            ) p '

execute(@query);</code>

| | | | |

Das obige ist der detaillierte Inhalt vonWie konvertiere ich Zeilen in SQL Server mithilfe der PIVOT-Funktion in Spalten?. 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