如果有人可以帮我解决这个SQL语句,我会很感激。我目前有这个:
select sum(datediff(second, [date1], [date2])) from [MyTable] where <condition>
但是我需要改进这个选择,即如果日期之间的差异大于@MaxDiffSecs,那么@MaxDiffSecs应该用于求和。我试着查看MIN运算符,但它只有一个参数,我希望至少有2个参数可以得到最小值。
嗯,无论如何,提前谢谢。 (我想你可以说我在SQL上效率不高:)
答案 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