2016-08-05 2 views
1

환자의 전학 (또는 여행, 어떤 용어인지 모름)이있는 테이블이 있습니다. 전송은 구급차에있을 수도 있고 자동차에있을 수도 있습니다. 이는 movil 열에 달려 있습니다. 하루에 그룹화 된 송금 횟수를 합산해야하고 유형은 movil입니다.그룹별로 내 행수를 곱합니다.

day movil 
1 M75 
1 M76 
1 M3 
2 M6 
2 M80 
3 M8 
3 M4 
3 M83 
3 M4 

모빌 M71, M72, M75, M76, M77, M81, M82, M83은 구급차 있으며, 나머지 차량은이를 가정 나의 테이블입니다. 그래서 나는 그들을 차와 구급차 사이에서 분리하고 싶다.

select 
    case when movil in ('M71','M72','M75','M76','M77','M81','M82','M83') then 'AMBULANCE' 
    else 'CAR' END as tipo, 
    DAY(fecha) as day, 
    COUNT(*) as total 
from traslados 
where YEAR(fecha) = '2016' and MONTH(fecha) = '07' 
group by DAY(fecha),tipo 
order by DAY(fecha) 

그래서 나는 하루에 2 행, 하나는 구급차에 해당하고, 다른 차에 해당하는이 있어야합니다

여기 내 쿼리입니다. 그러나, 나는 하루에 4 행을 얻고있다. 왜 이렇게되는지 이해할 수 없습니다.

+1

결과를 어떻게 게시 할 수 있습니까? –

+0

결과의 스 니펫을 보여줍니다 ... –

+0

데이터가 가상이므로 이러한 결과를 표시하는 방법을 모르겠습니다. –

답변

0

시도 같은 경우

SELECT CASE 
     WHEN movil IN ('M71', 
         'M72', 
         'M75', 
         'M76', 
         'M77', 
         'M81', 
         'M82', 
         'M83') THEN 'AMBULANCE' 
     ELSE 'CAR' 
    END AS tipo, 
    DAY(fecha) AS DAY, 
    COUNT(*) AS total FROM traslados WHERE YEAR(fecha) = '2016' AND MONTH(fecha) = '07' GROUP BY DAY(fecha), 
    CASE 
     WHEN movil IN ('M71', 
         'M72', 
         'M75', 
         'M76', 
         'M77', 
         'M81', 
         'M82', 
         'M83') THEN 'AMBULANCE' 
     ELSE 'CAR' 
    END 
ORDER BY DAY(fecha) 
+0

믿을 수있는, 그 와우 정확하게 내가 무엇을 찾고있다. 나는 그것이 어떻게 작동하는지 이해하지 못했지만! –

+0

섹션 별 그룹에서 별칭 ('tipo')을 사용할 수 없습니다. – Christian

+2

어, 가능합니다. – Strawberry

0

를 사용하는, 난 그냥 읽어 표현을 많이 반복 저장 그룹화, 쉽게 문을 다른 쿼리에서 쿼리를 감고 휴대용 :

select * from (
    select 
    case when movil in ('M71','M72','M75','M76','M77','M81','M82','M83') then 'AMBULANCE' 
     else 'CAR'end as tipo, 
    DAY(fecha) as day 
    from traslados 
    where EXTRACT(YEAR_MONTH from fecha) = '201607') x 
group by day, tipo 
order by day 

또한 EXTRACT를 사용하여 한 표현식에서 연도와 월을 지정하는 것에 유의하십시오.