我想写一个这样的查询:
SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o
但这不是MAX
函数的工作原理,对吗?它是一个聚合函数,因此需要一个参数,然后返回所有行的最大值.
有人知道怎么用我的方式吗?
我想写一个这样的查询:
SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o
但这不是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