Détermination de la valeur maximale de deux colonnes dans SQL Server : comparaison avec la fonction Max de .NET
Dans .NET, la fonction Max offre un moyen pratique de déterminer le plus grand de deux nombres. Toutefois, la fonction MAX se comporte différemment lors de l'utilisation de SQL Server. Il est couramment utilisé comme fonction d'agrégation qui renvoie la valeur maximale d'une colonne spécifiée sur toutes les lignes d'un tableau.
Pour les cas où la fonction Max doit opérer sur deux valeurs spécifiques plutôt que sur une colonne entière, SQL Server propose quelques options. Une approche courante consiste à utiliser une instruction UNION, dans laquelle vous créez une nouvelle table contenant deux colonnes de valeurs à comparer, puis appliquez la fonction MAX à la table combinée.
Cependant, cette approche peut devenir compliquée lorsqu'il s'agit de plusieurs colonnes et elle présente des limites dans la gestion des valeurs nulles. Une solution plus élégante a été introduite dans SQL Server 2008, qui consiste à utiliser des tables dérivées.
La réponse fournie suggère une solution puissante et flexible qui utilise des tables dérivées :
<code class="language-sql">SELECT o.OrderId, (SELECT MAX(Price) FROM (VALUES (o.NegotiatedPrice),(o.SuggestedPrice)) AS AllPrices(Price)) AS MaxPrice FROM Order o</code>
Cette approche par table dérivée offre de nombreux avantages :
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!