I am working on Classes management project. Everything is done successfully but only stuck with attendance report work.
i want result like this
My table structure:
I am working on Classes management project. Everything is done successfully but only stuck with attendance report work.
i want result like this
My table structure:
CREATE TABLE mp_attendence (atid int, atdisplayname varchar(9), atroll varchar(9), atstatus varchar(9), atdate date, atbatch varchar(9)) ;
INSERT INTO mp_attendence (atid, atdisplayname, atroll, atstatus, atdate, atbatch) VALUES (1, 'lavkush', '1', 'absent', '2017-03-01', 'p1'), (2, 'dhanji', '2', 'present', '2017-03-01', 'p1'), (3, 'lavkush', '1', 'present', '2017-03-02', 'p1'), (4, 'dhanji', '2', 'present', '2017-03-02', 'p1'), (5, 'lavkush', '1', 'present', '2017-03-04', 'p1'), (6, 'dhanji', '2', 'absent', '2017-03-04', 'p1'), (7, 'lavkush', '1', 'present', '2017-03-05', 'p1'), (8, 'dhanji', '2', 'absent', '2017-03-05', 'p1') ;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'(case when atstatus = ''',
atstatus,
''' then (atstatus) end) AS ',
replace (DATE_FORMAT(atdate, '%d %M %Y'), ' ', '')
)
) INTO @sql
from mp_attendence;
SET @sql = CONCAT('SELECT atdisplayname, atroll, ', @sql, ' from mp_attendence
group by atroll');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
From above query i achieve this result but i want to combine same dates like 1st march result should be in same row.