2012-03-06 154 views
0

我目前正在使用一個基於外部數據執行多個計算的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

嘗試使用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, 
... 
+0

優秀,這工作!再次感謝 – neilrudds 2012-03-07 16:44:12

1

編輯:@Mark Ba​​nnister是對的。它實際上並不是而是。看到他的答案。

如果我理解正確的話,只是嵌入你MAXMIN調用,如:

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

我覺得這種形式的MIN可能無法在所有工作SQL的形式。 – 2012-03-06 09:54:55