我有一张桌子,上面有患者的转诊(或旅行,不知道这个词是什么)。转移可以在救护车上,也可以在车内,取决于movil
栏。
我必须总计按日和movil
类型分组的转移数。
假设这是我的表:
day movil
1 M75
1 M76
1 M3
2 M6
2 M80
3 M8
3 M4
3 M83
3 M4
movil 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行。 我不明白为什么会这样。
答案 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)
答案 1 :(得分: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在一个表达式中指定年份和月份。