SQL CASE语句无法正常工作

时间:2009-09-24 06:41:36

标签: sql sql-server tsql sql-server-2008

我在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.我做错了什么?

2 个答案:

答案 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