Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Има ли функция Max в SQL Server, която приема две стойности като Math.Max ​​в .NET?

Ако използвате SQL Server 2008 (или по-нова версия), това е по-доброто решение:

SELECT o.OrderId,
       (SELECT MAX(Price)
        FROM (VALUES (o.NegotiatedPrice),(o.SuggestedPrice)) AS AllPrices(Price))
FROM Order o

Всички заслуги и гласове трябва да отидат за отговора на Свен на свързан въпрос „SQL MAX от множество колони?“
Казвам, че това е „най-добрият отговор " защото:

  1. Не е необходимо да усложнявате кода си с оператори UNION, PIVOT, UNPIVOT, UDF и безумно дълги CASE.
  2. Не е измъчван от проблема с обработката на нулеви стойности, а се справя добре с тях.
  3. Лесно е да замените „MAX“ с „MIN“, „AVG“ или „SUM“. Можете да използвате която и да е агрегатна функция, за да намерите агрегата в много различни колони.
  4. Не сте ограничени до имената, които използвах (т.е. „AllPrices“ и „Price“). Можете да изберете свои собствени имена, за да улесните четенето и разбирането за следващия човек.
  5. Можете да намерите множество агрегати, като използвате производните_таблици на SQL Server 2008, както следва:
    ИЗБЕРЕТЕ MAX(a), MAX(b) ОТ (СТОЙНОСТИ (1, 2), (3, 4), (5, 6) , (7, 8), (9, 10) ) КАТО MyTable(a, b)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина за връщане на всички таблици БЕЗ първичен ключ в SQL Server

  2. 4 функции за форматиране на число до 2 десетични знака в SQL Server

  3. Как да предотвратя повторното задействане на база данни?

  4. Как да ПРОМЕНЯ няколко колони наведнъж в SQL Server

  5. Какво наистина прави методът Statement.setFetchSize(nSize) в JDBC драйвер на SQL Server?