2015-05-06 2 views
0
SELECT user_appoint.TreatmentCaseId, 
user_appoint.TreatmentCase, 
tbl_rank.rank, 
user_appoint.u_id, 
DATE_FORMAT(MAX(user_appoint.ApptDateTime), ("%d-%m-%Y")) AS mdate, 
(CASE user_appoint.TreatmentCase 
WHEN 1 THEN "Open" WHEN 0 THEN "Closed" 
WHEN 2 THEN "Hospitalized" ELSE "" END) AS CaseStatus, 
user_det.dob FROM (`user_appoint`) JOIN `user_det` ON 
`user_appoint`.`u_id` = `user_det`.`id` JOIN `tbl_rank` ON 
`user_appoint`.`rank` = `tbl_rank`.`rank_id` WHERE 
`user_appoint`.`comp_id` = '123' AND 
`user_appoint`.`void` = 0 AND 
`user_appoint`.`purpose` = 2 AND 
`TreatmentCaseId` LIKE '%%' 
GROUP BY 
`user_appoint`.`TreatmentCaseId` 
LIMIT 5 

Это мой запрос и я получаю результат какMysql подсчитывать отчетливый с условием или при

TreatmentCaseId TreatmentCase mdate  CaseStatus dob   

    A11     2   10-03-2015 Hospitalized 1988-08-20 
    A12     0   27-11-2014 Closed  1986-08-26 
    A13     1   26-11-2014 Open   1988-08-20 
    A14     1   25-11-2014 Open   1988-08-20 

и теперь я хочу, чтобы подсчитать количество casestatus т.е. я получит разомкнут = 2 , закрыто = 1, госпитализировано = 1 Дата, которая была выбрана, является максимальной датой, поэтому на основе максимальной даты я выбрал столбец, и после того, как этот столбец будет выбран, будет подсчитано количество открытых, закрытых и госпитализированных случаев.

ответ

2

Вы можете использовать условное sum:

select sum(CaseStatus = 'Open') as OpenedCount 
    , sum(CaseStatus = 'Closed') as ClosedCount 
    , sum(CaseStatus = 'Hospitalized') as HospitalizedCount 
from (<...>) 
+0

не получив результат bro! ОткрытаяСтанция показывает пустой –

+0

@RajParekh: Типо, запутавшись, вы смешиваете текущие/прошлые времена. (Изменено 'Открыто'' 'Открыто') – potashin

1

выберите COUNT (*), CaseStatus из ("предыдущего запроса") группы по CaseStatus;

Смежные вопросы