Sql-Server

SQL Server 是否支持 GREATEST 和 LEAST,如果不支持,常見的解決方法是什麼?

  • December 4, 2021

回顧這個問題,似乎不需要做很多工作。他們試圖用日期擴展範圍。在其他數據庫中,您只需使用greatestand least..

least(extendDate,min), greatest(extendDate,max)

當我嘗試使用這些時,我得到

'least' is not a recognized built-in function name.
'greatest' is not a recognized built-in function name.

這將涵蓋任一方向的擴展。

出於問題的目的,您仍然需要進行獨家範圍更換。

我只是想知道 SQL Server 使用者如何實現查詢模式來模仿leastgreatest功能。

您是否將條件展開到CASE語句中,或者是否存在啟用此功能的 Microsoft 擴展、第三方載入項或許可證?

一種常見的方法是使用該VALUES子句,CROSS APPLY將兩列別名為一個列,然後獲取每個列的MINMAX

SELECT MIN(x.CombinedDate) AS least, MAX(x.CombinedDate) AS greatest
FROM   dbo.Users AS u
CROSS APPLY ( VALUES ( u.CreationDate ), ( u.LastAccessDate )) AS x ( CombinedDate );

還有其他的寫法,例如使用UNION ALL

SELECT MIN(x.CombinedDate) AS least, MAX(x.CombinedDate) AS greatest
FROM   dbo.Users AS u
CROSS APPLY ( SELECT u.CreationDate UNION ALL SELECT u.LastAccessDate ) AS x(CombinedDate);

但是,生成的查詢計劃似乎是相同的。

SQL Server 現在在 Azure SQL DB 中支持這兩個功能,並且推測它們將在 SQL Server 2022 的 prem 中可用。

引用自:https://dba.stackexchange.com/questions/187090