簡體   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