2014-11-26 3 views
1

내 코드가 [Actual Closed Loans] 변수를 취할 수 없어서 변수 [Loan Count]으로 나눌 수 없습니다.SQL Count (*) Group with Formula By

[Actual Closing Ratio] 변수에서이 단계를 수행해 보았습니다. 그러나 나는 제로 결과를 얻는다. 심지어이 코드에 새 변수를 추가하고 1/count(*) SQL을 사용하는 것이 좋지 않습니다.

이 컨텍스트에서 Count(*)을 잘못 사용해야한다는 것을 알고 있습니다. 그러나 나는 그것을 알아낼 수 없다.

내 쿼리 :이 숫자 결과를 얻을 수 1.0에 의해 곱셈을 추가, 분열을 정수로 인해 발생

Select 
    [PORT_DATE], 
    Count (*) as [Loan Count], --this works fine        
    sum(Case when [Closed or Fallen Out] ='c' then 1 else 0 end) as [Actual Closed Loans],--this works fine  
    sum(Case when [Closed or Fallen Out] ='C' then 1 else 0 end)/count(*) as [Actual Closing Ratio], --although code works doesnt produce correct result, output for this variable is all zeros 
From 
    dbo.XYZ             
Group by 
    [PORT_DATE]          
order by 
    [PORT_DATE] 

답변

3

.

sum(Case when [Closed or Fallen Out] ='C' then 1 else 0 end)*1.0/count(*) 
+0

또한 두 번 캐스팅 할 수 있습니다. 하지만 나는'* 1.0'을 좋아한다. – paqogomez

+0

@radar, 나는 당신의 요지를 보지만, 어떤 DB가 Integer division을 하는가? 내가 오라클과 MySQL을 시도하고 그들은 * 1.0을 필요로하지 않는다. – Dillon

+0

@ 딜론, MS SQL 서버는 정수 연산을 수행한다. – radar