我试着写下面的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