2010-07-13 5 views
1

보다 큰 구문 이것은 나를 미치게했습니다! 그것은 단순해야합니다.사용하기 쉬운 SQL 잘못된 구문

여기 내 코드입니다 :

Select 
logid, 
row_date, 
sum(acdcalls) as 'total calls', 
sum(ti_stafftime) as 'total time staffed', 
sum(acdtime) as 'time on the phone', 
Case acdtime 
When acdtime > 0 Then 
sum(ti_stafftime/acdtime) 
Else '0' 
End as MyPercent, 
RepLName+', '+RepFName AS Agent, 
SupLName+', '+SupFName AS Sup, 
MgrLName+', '+MgrFName AS Manager 

그리고 근처 '>'오류 메시지를

잘못된 구문을 얻고있다.

내가 뭘 잘못하고 있니?

+0

나는 또한 'MyPercent'로 SUM (사례 acdtime> 0 THEN (CAST (DECIMAL로 설정) (ti_stafftime as/dec)) * 100 ELSE 0 END)을 시도했으며 동일한 오류가 발생했습니다. – CodingIsAwesome

답변

10

CASE 부분에 항목이 있고 WHEN에 표현식이 있습니다. 둘 중 하나를 선택해야합니다

Case Foo 
When 'Bar' Then 1 
When 'Gamma' Then 2 
... 
End 

그러나,이 시나리오에서 복잡한 로직을 수행 할 수 없습니다

Case 
When acdtime > 0 Then sum(ti_stafftime/acdtime) 
Else '0' 
End as MyPercent, 

당신이 뭔가를 할 수있는 CASE 부분에 값을 사용합니다. 즉, When 부분의 값과 단순히 매치하여 많은 C 언어에서 switch 문처럼 작동합니다. 논리 식을 사용하려면 CASE 부분을 비워두고 WHEN 부분 만 있으면됩니다.

+0

+1 : Doh! 잘 잡아 –

+0

우수 감사합니다! – CodingIsAwesome