0

如果有人可以帮助我处理这个 SQL 语句,我将不胜感激。我目前有这个:

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

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

好吧,无论如何,提前谢谢。(我想你可以看出我在 SQL 方面的效率并不高:)

4

1 回答 1

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
于 2011-07-13T19:33:05.283 回答