Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengubah Baris ke Lajur dalam SQL Server?

Bagaimana untuk Mengubah Baris ke Lajur dalam SQL Server?

Linda Hamilton
Lepaskan: 2025-01-05 02:02:41
asal
931 orang telah melayarinya

How to Transpose Rows to Columns in SQL Server?

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
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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