限制SQL calc的最大值

时间:2012-03-06 09:07:48

标签: sql

我目前正在开发一个基于外部数据进行多次计算的SQL数据库。

基本上我有一个名为'Runhrs'的字段,我会记录特定日期或天数的最大值和最小值。

计算有时会返回(例如)26小时,但我们知道一天不可能超过24小时。计算是正确的,但数据本身似乎有错误,但无法对数据错误做任何事情。

因此,我如何限制最大值? SQL语句如下所示:

    SELECT MAX(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) - MIN(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) AS RUNHO, CONVERT(VARCHAR,TIME_STAMP,103) AS TIME_STAMP 
FROM HL_LOGS 
WHERE TIME_STAMP BETWEEN @BEGIN AND @END AND ID_LOCATION = @ID 
GROUP BY CONVERT(VARCHAR,TIME_STAMP,103), CONVERT(VARCHAR,TIME_STAMP,111) 
ORDER BY CONVERT(VARCHAR,TIME_STAMP,111)

提前致谢, 尼尔。

2 个答案:

答案 0 :(得分:2)

尝试使用CASE子句:

SELECT CASE when MAX(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) -
                 MIN(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) > 24
            then 24
            else MAX(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) -
                 MIN(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) 
       END AS RUNHO,
...

答案 1 :(得分:1)

编辑:@Mark Ba​​nnister是对的。实际上它确实工作。看他的答案。

如果我理解正确,只需将MAX嵌入MIN来电,例如:

SELECT MIN(24, MAX(...))
...