Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membuat Lajur Pivot Dinamik dalam Pelayan SQL?

Bagaimana untuk Membuat Lajur Pivot Dinamik dalam Pelayan SQL?

Barbara Streisand
Lepaskan: 2025-01-07 18:41:40
asal
640 orang telah melayarinya

How to Create Dynamic Pivot Columns in SQL Server?

Penjelasan terperinci tentang lajur jadual pangsi dinamik SQL Server

Dalam Pelayan SQL, Jadual Pangsi digunakan untuk membentuk semula data dengan menukar baris kepada lajur. Walau bagaimanapun, apabila nama lajur adalah dinamik dan tidak diketahui terlebih dahulu, mencipta jadual pangsi secara manual menjadi mencabar. Artikel ini meneroka penyelesaian kepada masalah ini dengan menjana lajur pangsi secara dinamik daripada jadual.

Andaikan kita mempunyai jadual Harta dengan lajur berikut:

<code>Id    Name</code>
Salin selepas log masuk

Kami juga mempunyai jadual PropertyObjects yang menyimpan nilai hartanah untuk objek tertentu:

<code>Id    Object_Id    Property_Id    Value</code>
Salin selepas log masuk

Matlamat kami adalah untuk mencipta jadual pangsi di mana setiap lajur sepadan dengan atribut yang ditakrifkan dalam jadual Harta dan setiap lajur memaparkan nilai atribut dan ID objek yang sepadan.

Untuk menjana lajur pangsi secara dinamik, kita boleh menggunakan langkah berikut:

  1. Dapatkan semua nama atribut yang berbeza:
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);

SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(Name)
                      FROM property
                      FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)'), 1, 1, '');</code>
Salin selepas log masuk

Ini akan mencipta rentetan dipisahkan koma @cols yang mengandungi nama semua sifat.

  1. Bina pertanyaan pangsi:
<code class="language-sql">SET @query =
'SELECT *
FROM
(
  SELECT
    o.object_id,
    p.Name,
    o.value
  FROM propertyObjects AS o
  INNER JOIN property AS p ON o.Property_Id = p.Id
) AS t
PIVOT 
(
  MAX(value) 
  FOR Name IN (' + @cols + ')
) AS p;';</code>
Salin selepas log masuk

Ini akan membina pertanyaan SQL dinamik @query yang mengandungi logik pangsi.

  1. Laksanakan pertanyaan:
<code class="language-sql">EXEC sp_executesql @query;</code>
Salin selepas log masuk

Melaksanakan @query akan mengembalikan jadual pangsi dengan nama lajur yang dijana secara dinamik daripada jadual Harta.

Dengan langkah di atas, kami boleh mengendalikan nama lajur dinamik dengan berkesan untuk mencipta jadual pangsi yang fleksibel dan berskala. Perlu diingatkan bahawa kaedah ini bergantung pada SQL dinamik, jadi pastikan anda memastikan keselamatan data sebelum digunakan untuk mengelakkan risiko suntikan SQL.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Lajur Pivot Dinamik dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan