2013-08-22 2 views
3

문제가 있습니다. 두 개의 다른 열 사이의 백분율을 계산해야합니다. 불행하게도 나는 그것이 동작하지 않습니다 내가 실행할 때 내가 얻을이 모두 "잘못된 열 이름 'CountOfPlannedVisits'는"&는 "잘못된 열 이름 'CountOfPlannedVisitsClosed'"입니다SQL 계산 2 열의 백분율

어떤 도움을 크게 I로 감상 할 수있다

SELECT  Count(*) As CountOfPlannedVisits, MAX(datename(month, dbo.tblVisit.DateConfirmed)) AS MonthName, 
    SUM(CASE WHEN tblVisit.VisitTypeRef <> '5' THEN 1 ELSE 0 END) AS CountOfPlannedVisitsClosed, CAST(100.0 * SUM("CountOfPlannedVisits")/SUM(CountOfPlannedVisitsClosed) AS Decimal(5,2)) As OverallAttendance 
FROM   dbo.tblContract INNER JOIN 
         dbo.tblCustomer ON dbo.tblContract.CustomerRef = dbo.tblCustomer.CustomerID INNER JOIN 
         dbo.tblContractSite ON dbo.tblContract.ContractID = dbo.tblContractSite.ContractRef INNER JOIN 
         dbo.tblVisit ON dbo.tblContractSite.CardNumber = dbo.tblVisit.CardNumber 
WHERE  (tblCustomer.CustomerNumber = '08434') 
AND (tblVisit.Routine = '1') 
AND year(tblVisit.DateConfirmed) = Year('2013')[email protected]) 
AND dbo.IsOnHoldEx(tblContract.OnHold, tblContractSite.OnHold, tblContract.OnHoldStartDate, tblContract.OnHoldEndDate, tblContractSite.OnHoldStartDate, tblContractSite.OnHoldEndDate) = 0 
AND tblVisit.Deleted = 0 -- make sure we dont pull through deleted visits 
AND (tblContractSite.DateInactive is NULL or tblContractSite.DateInactive > GetDate()) 
GROUP BY month(dbo.tblVisit.DateConfirmed) 
여기에서 어디로 가야할지 모르겠다.

감사

+0

전체를 표시하도록 쿼리를 업데이트 할 수 있습니까? : 지금 바로 다음에 'WHERE'가 있습니다. –

답변

1

에서만 order by 절에 열 별칭을 (귀하의 경우 CountOfPlannedVisits을 같은) 참조 할 수 있습니다. 다른 곳에서는 표현식을 반복하거나 하위 쿼리 테이블을 사용해야합니다.