2015-05-06 29 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

沒有得到結果兄弟! openedCount顯示爲空 –

+0

@RajParekh:錯字,感到困惑,你在混合現在/過去的時態。 (將'Opened'改爲'Open') – potashin

1

SELECT COUNT(*),CaseStatus 從( 「您以前查詢」) 組由CaseStatus;