Heim >Datenbank >MySQL-Tutorial >Wie kann ich Daten in T-SQL mithilfe eines dynamischen Pivots dynamisch Pivotieren?
Daten in T-SQL mithilfe dynamischer Pivots transformieren
Manchmal ist es notwendig, Daten vom Breitformat in ein strukturierteres Tabellenformat zu konvertieren. Stellen Sie sich eine Situation vor, in der eine Tabelle mehrere Spalten mit unterschiedlichen Datentypen und Werten enthält und die Daten dynamisch geschwenkt werden müssen, um einen Ergebnissatz zu erhalten, der für jede ID und den entsprechenden Spaltenwert eine andere Zeile bereitstellt.
Eine Möglichkeit, diese Konvertierung zu erreichen, ist die Verwendung der dynamischen Pivot-Funktion von T-SQL. Das folgende Beispiel zeigt, wie Daten mithilfe von T-SQL dynamisch geschwenkt werden:
<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 -- 按 ID 排序以确保列顺序一致 ORDER BY '],[' + CAST(t.ID AS VARCHAR(10)) FOR XML PATH('') ), 1, 2, '') + ']' SELECT @cols; -- 动态构建 PIVOT 查询 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;'; -- 执行动态 PIVOT 查询 EXECUTE(@query); -- 删除临时表 DROP TABLE #Table;</code>
Das Ergebnis der Ausführung des obigen Skripts ist eine Pivot-Tabelle mit einer eigenen Zeile für jede ID und dem entsprechenden Spaltenwert.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in T-SQL mithilfe eines dynamischen Pivots dynamisch Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!