1. ホーム
  2. sql

[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?

2022-03-17 18:43:07

質問

このようなクエリを書きたいのですが。

SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o

しかし、これでは MAX 関数が動作しますよね? これは集計関数なので、1つのパラメータを想定し、すべての行のMAX値を返します。

誰か私流のやり方を知っていますか?

解決方法は?

を作成する必要があります。 User-Defined Function のような構文にしたい場合、インラインでやりたいことは CASE 文は、他の方がおっしゃっているように

は、その UDF は、こんな感じでしょうか。

create function dbo.InlineMax(@val1 int, @val2 int)
returns int
as
begin
  if @val1 > @val2
    return @val1
  return isnull(@val2,@val1)
end

... そして、次のように呼び出します...

SELECT o.OrderId, dbo.InlineMax(o.NegotiatedPrice, o.SuggestedPrice) 
FROM Order o