Sql-Server
SQL Server 是否支持 GREATEST 和 LEAST,如果不支持,常見的解決方法是什麼?
回顧這個問題,似乎不需要做很多工作。他們試圖用日期擴展範圍。在其他數據庫中,您只需使用
greatest
andleast
..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 使用者如何實現查詢模式來模仿
least
和greatest
功能。您是否將條件展開到
CASE
語句中,或者是否存在啟用此功能的 Microsoft 擴展、第三方載入項或許可證?
一種常見的方法是使用該
VALUES
子句,CROSS APPLY
將兩列別名為一個列,然後獲取每個列的MIN
和MAX
。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 中可用。