Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data Secara Dinamik dalam SQL Server dengan Lajur Dinamik?

Bagaimana untuk Mengubah Data Secara Dinamik dalam SQL Server dengan Lajur Dinamik?

DDD
DDDasal
2024-12-31 11:47:10207semak imbas

How to Dynamically Pivot Data in SQL Server with Dynamic Columns?

PIVOT Pelayan SQL Dinamik untuk Lajur Dinamik

Anda mempunyai set data dengan berbilang lajur ('Name1' dan 'Name2') dan nilai lajur ('Nilai'). Anda ingin menukar data ini kepada format terpivot yang mana 'Name1' menjadi pengepala lajur dan nilainya diagregatkan oleh 'Name2'.

Penyelesaian dengan Dynamic SQL (SQL Server 2005 atau Kemudian)

Memandangkan SQL Server 2005 membenarkan SQL dinamik, anda boleh menyelesaikan masalah ini dengan memasang pertanyaan PIVOT secara dinamik. Berikut ialah kodnya:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

Pertanyaan ini akan berfungsi secara dinamik tidak kira berapa banyak nilai unik 'Name1' yang anda ada. Ia memberikan nilai 'Name1' yang dikumpul kepada pembolehubah @cols, yang kemudiannya digunakan untuk membina klausa PIVOT secara dinamik dalam pembolehubah @sqlquery. Pertanyaan terakhir kemudiannya dilaksanakan, menghasilkan output yang anda inginkan.

Sumber Tambahan:

  • [Pivot data in T-SQL](https://www.mssqltips.com/sqlservertip/1355/pivot-data-in-tsql/)
  • [Bagaimana cara saya membina ringkasan dengan menyertai satu jadual dengan SQL Pelayan?](https://stackoverflow.com/questions/260660/how-do-i-build-a-summary-by-joining-to-a-single-table-with-sql-server)
  • [PIVOT Dinamik dengan dinamik lajur](https://stackoverflow.com/questions/8248059/pivot-with-dynamic-columns-in-sql-server-2005)

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Secara Dinamik dalam SQL Server dengan Lajur Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn