Maison >base de données >tutoriel mysql >Comment trouver efficacement la valeur minimale sur plusieurs colonnes dans SQL Server ?

Comment trouver efficacement la valeur minimale sur plusieurs colonnes dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-10 09:07:121026parcourir

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

SQL Server : trouver efficacement la valeur minimale sur plusieurs colonnes

Trouver la valeur minimale sur plusieurs colonnes d'une table SQL Server est une tâche courante d'analyse de données. Cet article présente des méthodes efficaces pour y parvenir, en se concentrant sur SQL Server 2005 et au-delà.

Supposons un tableau avec les colonnes « Col1 », « Col2 » et « Col3 ». Notre objectif est de créer une nouvelle colonne, 'TheMin', contenant la valeur minimale de ces trois colonnes pour chaque ligne.

Méthode 1 : Utilisation des expressions CASE

Une approche simple utilise une expression CASE pour comparer les valeurs des colonnes et attribuer le minimum. Ceci est efficace pour un petit nombre de colonnes :

<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>

Cette instruction CASE compare les valeurs et sélectionne la plus petite.

Méthode 2 : Utiliser UNPIVOT pour plusieurs colonnes

Lorsqu'il s'agit de nombreuses colonnes, l'opérateur UNPIVOT propose une solution plus évolutive. UNPIVOT transforme plusieurs colonnes en une seule colonne, permettant une agrégation facile :

<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 remodèle les données, puis MIN() trouve le minimum dans chaque groupe d'ID. Le résultat est joint à la table d'origine. Cette méthode est plus maintenable et efficace avec un plus grand nombre de colonnes que les instructions CASE imbriquées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn