我想写一个这样的查询:

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

Sql相关问答推荐

按CTE创建任务表

我如何计算字母a出现的字符串的次数?

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

如何嵌套两条SQL语句

在SQL中为两个日期之间的每个日期添加行

SQL计数条目大于日期,包括交叉表中的零

按用户和时间列出的SQL Group考勤列表

如何在连接中使用三个不同的列,从而在PostgreSQL中只获得两个列?

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

postgres中的条件索引和触发器

按行值出现的顺序对行值进行分组

YEAR 函数仍然不可SARGable 吗?

group by 并根据同表中其他列的某些条件获取 group by 中的某一列值

如何为 ActiveRecord 联接应用附加条件

如何从postgresql中的项目映射(关联数组)设置值?

如何使用SELECT语句进行左连接,并根据右表中的特定值过滤结果?

如何在 case 语句中使用聚合?

避免在SQL中使用具有相同条件的多个子查询

如何创建一个递归计数器来查找一个元素有多少父级和子级?

如何更改 duckdb R 中的数据约束