내가 가진 아래 DB 테이블 :는 SQL 쿼리에 도움이 필요
SELECT YEAR(TargetEnd) 'YEAR',
MONTHNAME(TargetEnd) 'MONTH',
SUM(IF(TaskStatus = 'ongoing',1,0)) 'ONGOING',
SUM(IF(TaskStatus = 'completed',1,0)) 'COMPLETED',
COUNT(TaskId) 'TOTAL' FROM Task_Table GROUP BY YEAR(TargetEnd), MONTH(TargetEnd)
그 결과는 다음과 같습니다 난 총이 완료 매월 진행중인 작업을 얻을 수있는 내가 쿼리를 생성
TaskId StartDate TargetEnd TaskStatus 1 2011-01-01 2011-02-05 completed 2 2011-02-05 2011-02-05 ongoing 3 2011-02-04 2011-04-04 completed 4 2011-04-04 2011-04-04 completed 5 2011-04-06 2011-04-30 ongoing
: 작업은 012,321에서 여전히 "진행"동안
YEAR MONTH ONGOING COMPLETED TOTAL 2011 January 0 1 1 2011 February 0 1 2 2011 April 1 2 3하지만 내 요구 사항은
ONGOING
의 일환으로 작업 # 2를 추가하는 것입니다개월 (최대 2 월 - 4 월). 예상되는 내용은 다음과 같아야합니다.
YEAR MONTH ONGOING COMPLETED TOTAL 2011 January 0 0 0 2011 February 1 1 1 2011 March 1 0 1 2011 April 2 2 4
이 작업을 수행하는 방법에 대한 아이디어를 제공해 주시겠습니까? 어떤 도움을 주셔서 감사합니다. 감사.
위의 예상 결과를 편집했습니다. 카운트는 대상을 기반으로하기 때문에 1 월에는 카운트가 없어야합니다.의 달입니다.
각 입력 레코드를 어떻게 처리 할 것인지 예를 보여줄 수 있습니까? 그렇다면 입력 한 결과가 최종 결과에 어떻게 반영 될 수 있습니까? – MatBailie
테이블에 표시된 달을 검색하는 대신 테이블에 표시된 _first_ 개월부터 'NOW()'까지 검색하고 각 행의 다양한 값을 비교하는 조인을해야합니다. wrt 그 달은 반복된다. –