2009-09-24 157 views
1

我在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。我在做什麼錯?

回答

8

什麼數據類型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

2

嘗試:

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