Heim >Datenbank >MySQL-Tutorial >Wie werden Daten in T-SQL dynamisch geschwenkt?
Dynamischer Pivot in T-SQL
Im Bereich der Datenverarbeitung spielt der dynamische Pivot eine wichtige Rolle bei der Konvertierung von Daten vom Zeilenformat in das Spaltenformat. Dies ist besonders nützlich, wenn Sie Daten aggregiert und strukturiert präsentieren müssen.
Angenommen, Sie haben eine Tabelle mit Daten im folgenden Format:
ItemID | ColumnName | Value |
---|---|---|
1 | name | Peter |
1 | phone | 12345678 |
1 | [email protected] | |
2 | name | John |
2 | phone | 87654321 |
2 | [email protected] | |
3 | name | Sarah |
3 | phone | 55667788 |
3 | [email protected] |
Ihr Ziel ist es, diese Tabelle in das folgende Format zu konvertieren:
ItemID | name | phone | |
---|---|---|---|
1 | Peter | 12345678 | [email protected] |
2 | John | 87654321 | [email protected] |
3 | Sarah | 55667788 | [email protected] |
Dynamic Pivot in T-SQL ermöglicht Ihnen die dynamische Implementierung dieser Transformation, ohne dass statische SQL-Anweisungen erforderlich sind. Der folgende Code zeigt, wie diese Aufgabe ausgeführt wird:
<code class="language-sql">CREATE TABLE #Table ( ID INT, ColumnName VARCHAR(250), Value VARCHAR(250) ) INSERT INTO #Table SELECT 1,'name','Peter' INSERT INTO #Table SELECT 1,'phone','12345678' INSERT INTO #Table SELECT 1,'email','[email protected]' INSERT INTO #Table SELECT 2,'name','John' INSERT INTO #Table SELECT 2,'phone','87654321' INSERT INTO #Table SELECT 2,'email','[email protected]' INSERT INTO #Table SELECT 3,'name','Sarah' INSERT INTO #Table SELECT 3,'phone','55667788' INSERT INTO #Table SELECT 3,'email','[email protected]' DECLARE @cols NVARCHAR(2000) DECLARE @query NVARCHAR(4000) SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + t.ColumnName FROM #Table AS t FOR XML PATH('') ), 1, 2, '') + ']' SET @query = N'SELECT ID,'+ @cols +' FROM (SELECT t1.ID,t1.ColumnName , t1.Value FROM #Table AS t1) p PIVOT (MAX([Value]) FOR ColumnName IN ( '+ @cols +' )) AS pvt;' EXECUTE(@query) DROP TABLE #Table</code>
In diesem Code werden die Funktionen STUFF und EXECUTE verwendet, um dynamische SQL-Anweisungen zu erstellen. Die erstellte Abfrage generiert dynamisch PIVOT-Anweisungen basierend auf verschiedenen Spaltennamen in der Tabelle. Die Aggregatfunktion MAX() stellt sicher, dass für jede Spalte der neueste Wert zurückgegeben wird.
Das Endergebnis ist eine konvertierte Tabelle, die Ihren Anforderungen zur Darstellung Ihrer Daten in einem Pivot-Format entspricht. Diese Technik ist besonders nützlich, wenn mit größeren Datensätzen und komplexen Datenstrukturen gearbeitet wird.
Das obige ist der detaillierte Inhalt vonWie werden Daten in T-SQL dynamisch geschwenkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!