Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Cekap Mencari Nilai Minimum Merentasi Berbilang Lajur dalam Pelayan SQL?

Bagaimana untuk Cekap Mencari Nilai Minimum Merentasi Berbilang Lajur dalam Pelayan SQL?

Susan Sarandon
Lepaskan: 2025-01-10 09:07:12
asal
1026 orang telah melayarinya

How to Efficiently Find the Minimum Value Across Multiple Columns in SQL Server?

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

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

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!

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