SQL Server: Mencari Nilai Minimum Dengan Cekap Merentas Berbilang Lajur
Mencari nilai minimum merentas berbilang lajur dalam jadual SQL Server ialah tugas analisis data yang biasa. Artikel ini membentangkan kaedah yang cekap untuk mencapai matlamat ini, memfokuskan pada SQL Server 2005 dan seterusnya.
Mari kita andaikan jadual dengan lajur 'Col1', 'Col2' dan 'Col3'. Matlamat kami adalah untuk mencipta lajur baharu, 'TheMin', yang mengandungi nilai minimum daripada tiga lajur ini untuk setiap baris.
Kaedah 1: Menggunakan Ungkapan CASE
Pendekatan mudah menggunakan ungkapan CASE untuk membandingkan nilai lajur dan menetapkan nilai minimum. Ini cekap untuk sebilangan kecil lajur:
<code class="language-sql">SELECT Id, CASE WHEN Col1 < Col2 AND Col1 < Col3 THEN Col1 WHEN Col2 < Col1 AND Col2 < Col3 THEN Col2 ELSE Col3 END AS TheMin FROM YourTableNameHere;</code>
Pernyataan CASE ini membandingkan nilai dan memilih yang terkecil.
Kaedah 2: Menggunakan UNPIVOT untuk Berbilang Lajur
Apabila berurusan dengan banyak lajur, pengendali UNPIVOT menawarkan penyelesaian yang lebih berskala. UNPIVOT menukar berbilang lajur menjadi satu lajur, membolehkan pengagregatan mudah:
<code class="language-sql">WITH cte (ID, Col1, Col2, Col3) AS ( SELECT ID, Col1, Col2, Col3 FROM TestTable ) SELECT cte.ID, Col1, Col2, Col3, TheMin FROM cte JOIN ( SELECT ID, MIN(Amount) AS TheMin FROM cte UNPIVOT (Amount FOR AmountCol IN (Col1, Col2, Col3)) AS unpvt GROUP BY ID ) AS minValues ON cte.ID = minValues.ID;</code>
UNPIVOT membentuk semula data, kemudian MIN() mencari minimum dalam setiap kumpulan ID. Hasilnya disambungkan kembali ke jadual asal. Kaedah ini lebih boleh diselenggara dan cekap dengan bilangan lajur yang lebih besar daripada pernyataan CASE bersarang.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Nilai Minimum Merentasi Berbilang Lajur dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!