2016-10-03 34 views
1

我有數據庫的表稱爲數據在我的數據庫表結構是這樣的:我可以使用計數大小寫顯示MySQL中的條件計數結果嗎?

+----+------------+------+--------+---------+ 
| id | date | name | absent | late_in | 
+----+------------+------+--------+---------+ 
| 1 | 2016-09-09 | John | Hadir |  20 | 
| 2 | 2016-09-09 | Sean | Hadir |   | 
| 3 | 2016-09-09 | Alea | Libur |   | 
| 4 | 2016-09-09 | Rina | Hadir |   | 
| 5 | 2016-09-08 | John | Hadir |   | 
| 6 | 2016-09-08 | Sean | Ijin |   | 
| 7 | 2016-09-08 | Alea | Hadir |   | 
| 8 | 2016-09-08 | Rina | Hadir |  10 | 
| 9 | 2016-09-07 | John | Sakit |   | 
| 10 | 2016-09-07 | Sean | Hadir |   | 
| 11 | 2016-09-07 | Alea | Hadir |   | 
| 12 | 2016-09-07 | Rina | Hadir |   | 
+----+------------+------+--------+---------+ 

,我想在HTML中顯示此:

+------+-------+-------+------+------+-------+---------+ 
| Name | Hadir | Sakit | Ijin | Alpa | Libur | late_in | 
+------+-------+-------+------+------+-------+---------+ 
| John |  2 |  1 | - | - |  - | 20 Min | 
| Sean |  2 |  - | 1 | - |  - |  - | 
| Alea |  2 |  - | - | - |  1 |  - | 
| Rina |  3 |  - | - | - |  - | 10 Min | 
+------+-------+-------+------+------+-------+---------+ 

我已經嘗試使用此查詢,

SELECT date, name, absent, 
SUM(late_in) as late, 
COUNT(CASE WHEN absent = 'Hadir' THEN absent ELSE 0 END) AS hadir, 
COUNT(CASE WHEN absent = 'Sakit' THEN absent ELSE 0 END) AS sakit, 
COUNT(CASE WHEN absent = 'Izin/Cuti' THEN absent ELSE 0 END) AS izin, 
COUNT(CASE WHEN absent = 'Alpha' THEN absent ELSE 0 END) AS alpha, 
FROM data GROUP BY name WHERE date between '$foo' and '$foo2' 

但我不知道爲什麼,沒有要顯示的數據。

回答

0

SELECT DISTINCT
名稱爲 '姓名',
SUM(CASE WHEN缺席= 'Hadir' THEN 1 ELSE空END)爲 'Hadir',
SUM(CASE WHEN缺席= 'Sakit' THEN 1 ELSE作爲'Saki',
SUM(當'absent ='Ijin'THEN 1 ELSE null END')時,作爲'Ijin',
SUM(當'absent ='Alpa'THEN 1 ELSE null END) ',
SUM(late_in)作爲'late_in'
FR(當absent ='Libur'THEN 1 ELSE null END時)作爲'Libur',
FR OM 數據
GROUP BY名
ORDER BY ID ASC

+0

請碼格式的響應,並添加你做了什麼來解決OP的情況簡要說明。 – Parfait

+1

@Parfait抱歉格式化,我是新發布。請嘗試上述解決方案。你沒有收回數據的原因也可能是因爲你在代碼中應該有一個語法錯誤「在這行不應該有逗號」COUNT(CASE當absent ='Alpha'那麼不存在ELSE 0 END)AS alpha,。 – Likho

+0

我試過我們的代碼,並通過更換SUM工作正常(案例計數(案例...非常感謝Likho :) – Ferdian