Maison >base de données >tutoriel mysql >Comment trouver efficacement la valeur minimale sur plusieurs colonnes dans 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!