ऐसा लगता है कि आपके पास अज्ञात संख्या में शुल्क हो सकते हैं जिन्हें आप कॉलम में बदलना चाहते हैं, अगर ऐसा है तो आप इसे क्वेरी करने के लिए तैयार बयानों का उपयोग करना चाहेंगे:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(case when f.fee_name = ''',
f.fee_name,
''' then f.fee_amount else 0 end) AS `',
f.fee_name, '`'
)
) INTO @sql
FROM fee f;
SET @sql = CONCAT('SELECT s.school_id, ', @sql, '
, sum(f.fee_amount) as Total
FROM students s
LEFT JOIN stud_fee sf
on s.id = sf.stud_id
LEFT JOIN fee f
on sf.fee_id = f.id
GROUP BY s.school_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
देखें SQL Fiddle with Demo