2012-05-25 105 views
0

我在添加三個值的MySQL中遇到問題,這應該很簡單吧?在MySQL的Case語句中使用Sum

我有一個從基於第二列的值的列中選擇值的代碼,我使用了一個case語句是這樣的:

Select 
     Max(Case 
      When Table1.costcode Like '%Costcode1%' 
      Then Table1.costs 
      Else Null End) As 'Costcode1', 
     Max(Case 
      When Table1.costcode Like '%Costcode2%' 
      Then Table1.costs 
      Else Null End) As 'Costcode2', 
     Max(Case 
      When Table1.costcode Like '%Costcode3%' 
      Then Table1.costs 
      Else Null End) As 'Costcode3', 
     (Case 
      When Table1.costcode In ('%Costcode1%','%Costcode2%','%Costcode3%') 
      Then Sum(Table1.costs) 
      Else Null End) As 'Total Cost', 

From Table1 

前三的case語句正常工作和所有的返回值(這在數據庫中保存爲負數,例如-13624.00),但總成本案例僅返回空值...

列Table1.costcode也包含許多其他代碼,因此我不能將所有值而不是先挑出它們。

它必須是簡單總結這些數值,但顯然我失去了一些東西...幫助,請:-)

感謝

+0

後刪除多餘的逗號總成本。 – JHS

+0

對不起,這是一個錯字 - 實際的sql在此之後選擇其他的東西。 – enCue

回答

0

試試這個 -

SUM(Case Table1.costcode 
     When LIKE ('%Costcode1%') Then Table1.costs 
     When LIKE ('%Costcode2%') Then Table1.costs 
     When LIKE ('%Costcode3%') Then Table1.costs 
     Then Table1.costs 
     Else 0.00 End) As 'Total Cost' 
+0

感謝Juniad,我試過這個,它仍然返回空? – enCue

+0

只是爲了確認,Table1.costs列是數據類型Decimal(10,2) – enCue

+0

編輯它。你可以試試這個嗎? – JHS