2014-06-24 2 views
1

동일한 쿼리에서 내 데이터에 대한 다른 정보를 모두 찾으려고합니다. 별도의 조건에 따라 새 열을 만들고 싶습니다. 여기 내 테이블이 지금 모습입니다SQL에 다른 조건의 다른 열 추가

SELECT COUNT (distinct ext_project_id) as "Total Projects" 
    FROM dbo.v_report_project 
    INNER JOIN dbo.v_report_program 
    ON dbo.v_report_program.program_id = dbo.v_report_project.program_id 
    WHERE project_status = 'Active' 
    AND datediff (day, creation_date, getdate()) < 15 ; 

결과는이다 : 어떻게이 찾을 수

Total Projects | Projects Under 15 Days | Projects Between 15 and 60 Days | Projects  Over 60 Days 
163      ??       ??        ?? 

:

여기
Total Projects 
163 

내가 좋아하는 내 테이블을보고 싶은 것입니다 같은 시간에 다른 카운트를 모두?

답변

0

당신은 특정 날짜 범위에 특정 count를 제한하는 case를 사용할 수 있습니다

select count(distinct project_id) as total 
,  count(distinct case 
      when datediff(day, creation_date, getdate()) < 6 
      then project_id end) as total_6day 
,  count(distinct case 
      when datediff(day, creation_date, getdate()) < 7 
      then project_id end) as total_7day 
,  count(distinct case 
      when datediff(day, creation_date, getdate()) < 42 
      then project_id end) as total_42day 
from dbo.v_report_project proj 
join dbo.v_report_program prog 
on  proj.program_id = prog.program_id 
where project_status = 'Active' 

when 일치없고 else를 지정하지 않는 경우, case 반환 null. countnull을 무시하므로 적절한 부분합을 얻습니다.

+0

완벽하게 작동했습니다. 무리 감사 –