我想在select语句中找到最小值; 假设有一个名为findMin的函数,
select
select min from findMin(firstDate,secondDate,thirdDate,....NDate),
firstDate,
secondDate,
thirdDate,
.... (having N number of dates)
from
dateTable
我在sql server 2008 R2中编写findMin函数时遇到了麻烦。
有帮助吗?
由于
答案 0 :(得分:2)
您可以使用它来查找最早的日期:
SELECT
MinDate.mDate,
dt.firstDate,
dt.secondDate,
dt.thirdDate
FROM
dateTable dt
outer apply
(
SELECT min(mDate)
FROM (values(firstDate), (secondDate),
(ThirdDate), (FourthDate)) x(mDate)
) MinDate
答案 1 :(得分:1)
SQL Server不支持least()
和greatest()
(唉)。如果值永远不是NULL
,则以下逻辑很麻烦,但在五个日期中可以满足您的要求:
select (case when date1 <= date2 and date1 <= date3 and date1 <= date4 and date1 <= date5
then date1
when date2 <= date3 and date2 <= date4 and date2 <= date5
then date2
when date3 <= date4 and date3 <= date5
then date3
when date4 <= date5
then date4
else date5
end)
这可以很容易地推广到更多日期。它只需要更多的逻辑。
还有另一种方法是取消数据的转换然后重新聚合。但是,这比仅在一行内进行操作要昂贵得多。