2014-01-25 3 views
0

안녕하세요 마침내 단일 행으로 결과를 얻는 방법을 알아 냈지만 올바른 결과를 얻으려면 계속 노력해야합니다.동일한 열에 여러 where 절

다음은 내 검색어입니다. 나는 한 달 동안보고 된 결함 수와 결함 수를 얻으려고합니다. 내가 dateFormat는에 date_reported dateformat을 사용할 (변경하는 경우 (

이 난 후 오전 출력!

select 
    count(r.rpt) as Reported, 
    count(c.cpt) as Completed, 
    DATE_FORMAT(DATE_REPORTED,'%M %Y') as MONTH 

from 
    (select COUNT(faultid) as cpt 
    from fault_info 
    where status = 'Completed' 
    and date_completed >= LAST_DAY(NOW()) - INTERVAL 6 MONTH + INTERVAL 1 DAY 
    ) c, 
    (select COUNT(faultid) as rpt 
    from fault_info 
    where status != 'Completed' 
    and date_reported >= LAST_DAY(NOW()) - INTERVAL 6 MONTH + INTERVAL 1 DAY 
    ) r, 
    fault_info 

GROUP BY MONTH 

ORDER BY date_reported desc 

어떤 도움이 가장 극명하게 될 것이다. 완료보고에서 교류, 숫자 변화를 date_completed. 그러나에서 순간에 나는 단순히 두 열에 대해 동일한 숫자를 얻는다. 위에서 언급했듯이 숫자를 변경하려면 DateFormat (date_reported -> DateFormat (date_completed, 그러나 숫자는 여전히 동일하게 유지되지만 다른 하나는 맞지 않습니다.

Select DateFormat (date_reported ...

완료보고

, MONTH

'99', '99', '2014 년 1 월'

'72', '72', '12 월 2013'

'71', '71 ','2013 11월 '

'107 ','107 ','10 월 2013 '

'114 ','114 ','9 월 2013 '

'112 ','112 ', '2013 년 8 월'

또는 date_completed 선택 DateFormat의 (...

보고, 완료, MONTH

'68', '68', '2014 1월'

'65', '65', ' 년 12 월 2013 '

'76 ','76 ','2013 2013 11월 '

'113 ','113 ','10월 '

,

'124', '124', '2013년 9월'

'140', '140', '2013년 8월'

나는 우리가 닫는 경우 내가 볼 수있는 비율 비교를 할 수있는이 방법이 더 우리가 열어 놓은 결함들. 그래서 한 달 동안 실제보고 된 것과 한 달 동안 닫힌 실제를 필요로합니다.

+1

무엇이 문제입니까? –

+0

적절한 결과 세트 ( – Strawberry

답변

2

약간 구조 조정, 여러

SELECT 
     DATE_FORMAT(DATE_REPORTED,'%M %Y') as MONTH, 
     SUM(status = 'Completed') as Completed, 
     SUM(status != 'Completed') as StillOpen 
    from 
     fault_info 
    group by 
     DATE_FORMAT(DATE_REPORTED,'%M %Y'), 
    order by 
     YEAR(DATE_REPORTED) desc, 
     MONTH(DATE_REPORTED) desc 

논리식의 합 (예 : 상태 = '완료'등) 때 사실 다른 0, 1과 동일합니다 대 단일 패스에서 할 수 있어야합니다. 따라서 행을 통해 쿼리하면 집계를 통해 하나의 그룹으로 가능한 개수를 모두 얻고 있으며 역사적 가치를 거쳐 내려가는 가장 최근에 대한 내림차순 (년/월) 기준으로 여전히 순서를 지정합니다.

+0

+1)와 함께 적절한 DDL (및/또는 sqlfiddle)을 제공하십시오. . . 훨씬 향상된 버전. –

+0

도움을 주셔서 감사합니다. 제 편집문을 보시고 도움이 될만한 것이 있다면 정말 최고 일 것입니다 !! – lcalway