Memindahkan Baris ke Lajur dalam Pelayan SQL
Apabila bekerja dengan data jadual, mengalihkan baris ke lajur boleh menjadi transformasi yang berguna. Dalam SQL Server, terdapat beberapa pendekatan untuk menyelesaikan tugas ini, bergantung pada keperluan khusus.
Pengagregatan Bersyarat
Satu kaedah ialah menggunakan pengagregatan bersyarat. Pendekatan ini sesuai apabila bilangan lajur diketahui terlebih dahulu. Dengan menggunakan penyata CASE bersarang, anda boleh menentukan nilai untuk mendapatkan semula bagi setiap lajur berdasarkan syarat tertentu. Pertanyaan di bawah menunjukkan pengagregatan bersyarat:
SELECT TimeSeconds, COALESCE(MAX(CASE WHEN TagID = 'A1' THEN Value END), 'n/a') A1, COALESCE(MAX(CASE WHEN TagID = 'A2' THEN Value END), 'n/a') A2, COALESCE(MAX(CASE WHEN TagID = 'A3' THEN Value END), 'n/a') A3, COALESCE(MAX(CASE WHEN TagID = 'A4' THEN Value END), 'n/a') A4 FROM table1 GROUP BY TimeSeconds
Operator PIVOT
Pilihan lain ialah menggunakan operator PIVOT. Operator ini membolehkan anda memutarkan baris ke dalam lajur berdasarkan nilai kunci. Pertanyaan berikut menggunakan PIVOT untuk menukar baris:
SELECT TimeSeconds, A1, A2, A3, A4 FROM ( SELECT TimeSeconds, TagID, Value FROM table1 ) s PIVOT ( MAX(Value) FOR TagID IN (A1, A2, A3, A4) ) p
SQL Dinamik
Jika bilangan lajur tidak tetap atau ditentukan secara dinamik, anda boleh memanfaatkan dinamik SQL. Pendekatan ini melibatkan membina rentetan pertanyaan SQL berdasarkan nilai TagID yang tersedia dan melaksanakannya secara dinamik. Kod di bawah memberikan contoh:
DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX) SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(TagID) FROM Table1 ORDER BY 1 FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'),1,1,'') SET @sql = 'SELECT TimeSeconds, ' + @cols + ' FROM ( SELECT TimeSeconds, TagID, Value FROM table1 ) s PIVOT ( MAX(Value) FOR TagID IN (' + @cols + ') ) p' EXECUTE(@sql)
Teknik ini menyediakan pelbagai cara untuk menukar baris ke dalam lajur dalam SQL Server. Pendekatan yang paling sesuai bergantung pada sifat data dan keperluan khusus tugasan.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Baris ke Lajur dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!