首頁 > 資料庫 > mysql教程 > 如何在SQL Server中有效率地尋找多列的最小值?

如何在SQL Server中有效率地尋找多列的最小值?

Susan Sarandon
發布: 2025-01-10 09:07:12
原創
1026 人瀏覽過

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

SQL Server:高效率找出多列中的最小值

尋找 SQL Server 表中多個欄位的最小值是一項常見的資料分析任務。 本文介紹了實現這一目標的有效方法,重點關注 SQL Server 2005 及更高版本。

假設一個表格包含「Col1」、「Col2」和「Col3」欄位。 我們的目標是建立一個新欄位“TheMin”,其中包含每行這三列的最小值。

方法一:使用CASE表達式

一個簡單的方法是使用 CASE 表達式來比較列值並分配最小值。 這對於少量列來說是有效的:

<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>
登入後複製

此 CASE 語句比較值並選擇最小的。

方法 2:對多列使用 UNPIVOT

在處理許多欄位時,UNPIVOT 運算子提供了更具可擴充性的解決方案。 UNPIVOT 將多列轉換為單列,以便輕鬆聚合:

<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 重塑數據,然後 MIN() 找出每個 ID 組內的最小值。 結果被連接回原始表。 與巢狀 CASE 語句相比,此方法具有更多的列數,因此更易於維護和有效率。

以上是如何在SQL Server中有效率地尋找多列的最小值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板