sql >> データベース >  >> RDS >> Sqlserver

.NETのMath.Maxのように2つの値を取るSQLServerのMax関数はありますか?

    SQL Server 2008(またはそれ以降)を使用している場合は、これがより適切なソリューションです:

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

    すべてのクレジットと投票は、関連する質問「複数の列のSQL MAX?」に対するSvenの回答に進む必要があります。
    これは「ベストアンサー」だと思います。 "理由:

    1. コードをUNION、PIVOT、UNPIVOT、UDF、およびクレイジーな長いCASEステートメントで複雑にする必要はありません。
    2. nullの処理の問題に悩まされることはなく、nullを適切に処理します。
    3. 「MAX」を「MIN」、「AVG」、または「SUM」と簡単に交換できます。任意の集計関数を使用して、さまざまな列の集計を見つけることができます。
    4. 私が使用した名前(つまり、「AllPrices」と「Price」)に限定されません。自分の名前を選んで、次の人が読みやすく理解しやすいようにすることができます。
    5. SQL Server 2008のderived_tablesを使用して、次のように複数の集計を見つけることができます。
      SELECT MAX(a)、MAX(b)FROM(VALUES(1、2)、(3、4)、(5、6) 、(7、8)、(9、10))AS MyTable(a、b)


    1. Oracle用のSQL挿入を生成しています

    2. Oracleで全表スキャンを検索するためのクエリ

    3. SQL SafeBackup8.7.2の一般提供の発表

    4. ルームエラー:クエリによって返される列にフィールド名がありません