我在SQL Server 2008中有一个视图,其中有几列是一列的表达式除以另一列。我必须考虑除数为0,所以我使用CASE语句。以下是一个例子:
CASE SUM(dbo.GameStats.BringBacksAttempted)
WHEN 0 THEN
0
ELSE
SUM(dbo.GameStats.BringBacks) / SUM(dbo.GameStats.BringBacksAttempted)
END
即使SUM(BringBacksAttempted)和SUM(BringBacks)不为0,语句也始终为0.我做错了什么?
答案 0 :(得分:8)
BringBacksAttempted和BringBacks的数据类型是什么? 如果两者都是int并且结果变为分数,则只能看到它的整数部分。
e.g。 100/250将返回0.
然而,CAST(100 as Decimal) / 250
将返回0.40000
在其中一个字段上使用CAST或CONVERT。
答案 1 :(得分:2)
尝试:
CASE
WHEN SUM(dbo.GameStats.BringBacksAttempted) = 0 THEN
0
ELSE
SUM(dbo.GameStats.BringBacks) / SUM(dbo.GameStats.BringBacksAttempted)
END