我試着寫下面的case語句在我的SELECT列表:SQL GROUP BY CASE語句aviod示數出
CASE
WHEN SUM(up.[Number_Of_Stops]) = 0 THEN 0
ELSE SUM(up.[Total_Trip_Time]/up.[Number_Of_Stops])
END
我保持零次失誤越來越divde雖然。這是爲了避免這種情況,本案件陳述的重點。任何其他想法?
我試着寫下面的case語句在我的SELECT列表:SQL GROUP BY CASE語句aviod示數出
CASE
WHEN SUM(up.[Number_Of_Stops]) = 0 THEN 0
ELSE SUM(up.[Total_Trip_Time]/up.[Number_Of_Stops])
END
我保持零次失誤越來越divde雖然。這是爲了避免這種情況,本案件陳述的重點。任何其他想法?
您正在檢查與導致錯誤的情況不同的情況。注:
WHEN SUM(up.[Number_Of_Stops]) = 0
纔會被真正當分組所有記錄都Number_Of_Stops
= 0。如果不是這樣,但一些記錄做有Number_Of_Stops
= 0時,你會被分割零。
相反,試試這個:
SUM(CASE
WHEN up.[Number_Of_Stops] = 0 THEN 0
ELSE up.[Total_Trip_Time]/up.[Number_Of_Stops]
END)
零檢查是基於SUM
,這是一個聚合函數,這意味着它不在每行執行 - 這是除法發生的時間。
您將不得不查看GROUP BY子句,或者在將SUM應用於結果之前,在子查詢中運行除法(和零檢查)。 IE:
SELECT SUM(x.result)
FROM (SELECT CASE
WHEN up.[Number_Of_Stops]) > 0 THEN
up.[Total_Trip_Time]/up.[Number_Of_Stops]
ELSE
0
END AS result
FROM TABLE) x
,如果[NUMBER_OF_STOPS]可能爲NULL,請確保你搞定了。 – Bill 2010-11-11 19:36:05
@ Bill:是的,好點。 – 2010-11-11 19:37:08