SQL CASE语句无法正常工作

问题描述:

我在SQL Server 2008中有一个视图,其中有几列是一列被另一列划分的表达式。我必须考虑除数为0,所以我使用CASE语句。这里是一个示例:SUM(BringBacks)SQL CASE语句无法正常工作

CASE SUM(dbo.GameStats.BringBacksAttempted) 
    WHEN 0 THEN 
    0 
    ELSE 
    SUM(dbo.GameStats.BringBacks)/SUM(dbo.GameStats.BringBacksAttempted) 
END 

即使SUM(BringBacksAttempted),而不是0,该语句始终为0。我在做什么错?

什么数据类型BringBacksAttempted和BringBacks?
如果两者都是int并且结果成为分数,则只能看到它的整数部分。

例如100/250将返回0.
CAST(100 as Decimal)/250将返回0.40000

对其中一个字段使用CAST或CONVERT。

+0

或乘以1.0 – HLGEM 2009-09-24 20:39:08

+0

我的意思是将分数的上限或下限乘以1.0,而不是整个事情。 – HLGEM 2009-09-24 20:40:55

+0

@HLGEM:是的,你说得对。 – shahkalpesh 2009-09-25 00:27:06

尝试:

CASE 
    WHEN SUM(dbo.GameStats.BringBacksAttempted) = 0 THEN 
    0 
    ELSE 
    SUM(dbo.GameStats.BringBacks)/SUM(dbo.GameStats.BringBacksAttempted) 
END