Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Lajur Pivot secara Dinamik dalam Pelayan SQL?
Dalam SQL Server, lajur pangsi dinamik membolehkan anda membuat jadual pangsi yang lajurnya berubah berdasarkan nilai dalam jadual lain. Ini berguna apabila bilangan lajur pangsi tidak diketahui terlebih dahulu atau sering berubah.
Pertimbangkan borang berikut:
Anda ingin mencipta jadual pangsi yang mengandungi satu lajur untuk setiap sifat dalam jadual Harta. Walau bagaimanapun, bilangan sifat mungkin berubah, jadi anda memerlukan cara untuk mendapatkan nama lajur secara dinamik.
Untuk mencipta lajur pangsi dinamik, anda boleh menggunakan SQL dinamik dengan klausa PIVOT. Kod berikut menunjukkan satu penyelesaian:
<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, ''); -- 构造动态查询 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;'; -- 执行动态查询 EXEC(@query);</code>
Pertanyaan dinamik akan mengembalikan jadual pangsi yang mengandungi satu lajur untuk setiap sifat dalam jadual Harta. Nilai dalam jadual pangsi akan menjadi nilai maksimum untuk setiap gabungan atribut-objek.
Sebagai contoh, jika jadual Harta mengandungi sifat berikut:
dan jadual PropertyObjects mengandungi data berikut:
OBJECT_ID | PROPERTY_ID | VALUE |
---|---|---|
1 | 1 | ee |
1 | 2 | fd |
1 | 3 | fdf |
1 | 4 | ewre |
2 | 1 | dsd |
2 | 2 | sss |
2 | 3 | dfew |
2 | 4 | dff |
Pertanyaan dinamik akan mengembalikan jadual pangsi berikut:
OBJECT_ID | PROPERTY1 | PROPERTY2 | PROPERTY3 | PROPERTY4 |
---|---|---|---|---|
1 | ee | fd | fdf | ewre |
2 | dsd | sss | dfew | dff |
Atas ialah kandungan terperinci Bagaimana untuk Menjana Lajur Pivot secara Dinamik dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!