2012-05-25 2 views
0

MySQL에서 세 가지 값을 추가하는 데 문제가 있습니다.이 작업은 간단해야합니다.MySQL의 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 

처음 세 개의 사례 문이 잘 작동하고 모든 반환 값 (이 예를 들어 -13624.00과 같이 음수로 데이터베이스에 저장됩니다. 그러나 총 비용 사례는 Null을 반환합니다 ...

열 Table1.costcode에는 많은 다른 코드도 포함되어 있으므로 모든 값을 더할 수 없습니다 먼저 선택하지 않아도됩니다.

이러한 값을 요약하면 간단해야하지만 분명히 내가

감사

+0

이 후 여분의 쉼표를 제거 총 비용. – JHS

+0

죄송합니다 typo - 실제 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, 나는 이것을 시도하고 여전히 Null을 반환 ??? – enCue

+0

확인하기 위해 Table1.costs 열은 Decimal (10,2) 데이터 형식입니다 – enCue

+0

편집 됨. 이걸로해볼 수 있니? – JHS