繁体   English   中英

SQL Server 相当于 Oracle LEAST?

[英]SQL Server equivalent to Oracle LEAST?

我一直在寻找与 Oracle LEAST 函数相当的等效项。

我希望实现一个用户定义的函数,该函数执行大约 10 次相当复杂的计算,并从每个计算中获取最小值。

我会在 Oracle 中做的是:

SELECT LEAST
(
select expression1 from dual,
select expression2 from dual,
select expression3 from dual
) from dual

有关 Oracle LEAST 的更多信息,请参见http://www.techonthenet.com/oracle/functions/least.php

如果表达式 1 返回 10,表达式 2 返回 5,表达式 3 返回 30,则整个表达式将返回 5。

因为这可能需要大约 10-20 次计算,所以 CASE WHEN 语法很快就会变得笨拙。

尽管如果我们将代码分解得更多,代码将更具可读性,但我认为在一个数据库查询中执行它会更有效。 请让我知道我在这一点上是不正确的!

即,是一个具有 20 个简单查询的存储过程,比具有一个查询的存储过程慢得多,该查询在一个查询中引用了很多表。

也许这个查询可以帮助:

 SELECT  min(c1)  
 from ( 
      select expression1 as c1  
      union all
      select expression2 as c1 
      union all 
      select expression3 as c1
 )

函数 Least() 在 Oracle 中水平应用(在行级别),而 Min() 垂直应用在列上。 问题中的示例需要 Min()。

Azure SQL DB 和未来的 SQL Server 版本现在实现的最多/最少:

https://docs.microsoft.com/en-us/sql/t-sql/functions/logical-functions-greatest-transact-sql?view=sql-server-ver15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM