[英]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 版本现在实现的最多/最少:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.