2017-12-22 20 views
1

여기에 긴 하위 쿼리가 있습니다. 이것을 압축하는 방법이 있습니까? 상관 하위 쿼리가 작동하지 않을 때 하위 쿼리 압축

SELECT 
     Count(TicketNbr) AS [Tickets Entered] 

     -- SUBQUERY HERE 
     ,  (SELECT AVG(hours_actual) 
      FROM dbo.Service 
      WHERE 
      [company_name] LIKE 'XYZ' 
      AND [status_description] NOT IN ('>Cancelled', 'Duplicate') 
      AND hours_actual >= 0.1 
      ) 

     FROM dbo.Service 
     WHERE 
     [company_name] LIKE 'XYZ' 
     AND [status_description] NOT IN ('>Cancelled', 'Duplicate') 

나는 상관 하위 쿼리를 사용하려하지만이 TicketNbr가 외부 쿼리에 그룹화 할 수 해야합니다. 나는 그것을 원하지 않는다.

이것은 작동하지 않습니다.

SELECT 
     Count(TicketNbr) AS [Tickets Entered] 

     -- SUBQUERY HERE 
     ,  (SELECT AVG(hours_actual) 
      FROM dbo.Service AS [Y] 
      WHERE Y.TicketNbr = X.TicketNbr 
      AND Y.hours_actual >= 0.1 

      ) 

     FROM dbo.Service AS [X] 
     WHERE 
     [company_name] LIKE 'XYZ' 
     AND [status_description] NOT IN ('>Cancelled', 'Duplicate') 
당신은 간단한 경우 표현식으로 동일한 작업을 수행 할 수

답변

1

:

SELECT Count(TicketNbr) AS [Tickets Entered] 
,  AVG(CASE WHEN hours_actual >= 0.1 THEN hours_actual END) 
FROM dbo.Service AS [X] 
WHERE [company_name] LIKE 'XYZ' 
    AND [status_description] NOT IN ('>Cancelled', 'Duplicate') 
+0

당신을 감사합니다! CASE가 집합 함수 내에서 사용될 수 있음을 완전히 잊었습니다! – Dombey