Sejauh yang saya tahu, Anda tidak dapat menambahkan kolom secara dinamis ke pernyataan SELECT. Apa yang Anda minta adalah cara menyajikan data dan itu bukan sesuatu yang dipedulikan MySQL. Anda harus menanganinya di bagian depan.
Namun, Anda dapat menipu dengan membuat kueri dalam model Anda dan menambahkan kolom baru tersebut secara dinamis, dengan memasukkan lebih banyak MAX(case...
secara dinamis) ke string kueri. Itu bukan solusi yang bagus.
Sunting:
Jadi, saya kira Anda sedang berbicara tentang solusi jelek. Nah, pada dasarnya Anda harus secara dinamis membuat string kueri (pseudocode):
$initialDay = 02/28/2012;
$lastDay = 03/28/2012;
$dayNumber = 1;
$sql = 'Select cadet_record.fname,cadet_record.lname,cadet_record.mname, student_id';
while ($initialDay <= $lastDay) {
$sql .= ', MAX(case WHEN week = $initialDay then present end) as day' . $dayNumber;
$initialDay = $initialDay + 1 day;
$dayNumber++;
}
$sql .= ' From attendance blah blah...';
Maka kueri Anda akan terlihat seperti ini untuk tanggal dari 18/02/2012 hingga 18/03/2012:
Select cadet_record.fname,cadet_record.lname,cadet_record.mname, student_id,
,MAX(case WHEN week = '02/18/2012' then present end) as day1
,MAX(case WHEN week = '02/19/2012' then present end) as day2
From attendance
LEFT JOIN cadet_record ON cadet_record.stud_no = attendance.student_id WHERE section = '$section' AND schoolyear = '$year' AND component = '$component' AND semester = '$semester'
KELOMPOK MENURUT student_id
Perhatikan saya menambahkan hari, bukan minggu karena contoh Anda menunjukkan peningkatan hari, meskipun nama kolomnya adalah minggu