SQL Server:选择SUM中两个值之间的最小值

时间:2011-07-13 19:22:42

标签: sql sql-server sum min

如果有人可以帮我解决这个SQL语句,我会很感激。我目前有这个:

select sum(datediff(second, [date1], [date2])) from [MyTable] where <condition>

但是我需要改进这个选择,即如果日期之间的差异大于@MaxDiffSecs,那么@MaxDiffSecs应该用于求和。我试着查看MIN运算符,但它只有一个参数,我希望至少有2个参数可以得到最小值。

嗯,无论如何,提前谢谢。 (我想你可以说我在SQL上效率不高:)

1 个答案:

答案 0 :(得分:3)

SELECT SUM(
    CASE WHEN DATEDIFF(second, [date1], [date2]) > @MaxDiffSecs THEN @MaxDiffSecs
    ELSE DATEDIFF(second, [date1], [date2]) END)
FROM [MyTable] 
WHERE <condition>

这不是我的头脑,不确定CASE是否在SUM

内工作

如果该语法不起作用,您可以使用CTE

WITH ValuesToSum AS (
    SELECT CASE WHEN DATEDIFF(second, [date1], [date2]) > @MaxDiffSecs THEN @MaxDiffSecs
        ELSE DATEDIFF(second, [date1], [date2]) END AS TheValue
    FROM [MyTable]
    WHERE <condition>
)

SELECT SUM(TheValue) FROM ValuesToSum