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。
答
尝试:
CASE
WHEN SUM(dbo.GameStats.BringBacksAttempted) = 0 THEN
0
ELSE
SUM(dbo.GameStats.BringBacks)/SUM(dbo.GameStats.BringBacksAttempted)
END
或乘以1.0 – HLGEM 2009-09-24 20:39:08
我的意思是将分数的上限或下限乘以1.0,而不是整个事情。 – HLGEM 2009-09-24 20:40:55
@HLGEM:是的,你说得对。 – shahkalpesh 2009-09-25 00:27:06