我目前正在开发一个基于外部数据进行多次计算的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)
提前致谢, 尼尔。
答案 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 Bannister是对的。实际上它确实不工作。看他的答案。
如果我理解正确,只需将MAX
嵌入MIN
来电,例如:
SELECT MIN(24, MAX(...))
...