[英]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.