Received the report. I'm not really a Crystal Reports person, so I can't really help you there. As far as the query goes, the only thing I see that's missing is a way to differentiate the same person answering the questions on the same date (see page 1 of the report, lecturer Chin Kok Seng, student Foo Pei Pei.)
Also, you'll have to do the same pattern of correlated subselect for each category, so you'll have three per question for Customer Service, three per question for Instructor, three per question for Runner, like so:
SELECT A.name, A.mykad,
(select count(*) from customerservice B1 where B1.id = A.id and B1.Q1='Excellent') AS Q1E1,
(select count(*) from customerservice C1 where C1.id = A.id and C1.Q1='Satisfaction') AS Q1S1,
(select count(*) from customerservice D1 where D1.id = A.id and D1.Q1='Poor') AS Q1P1,
(select count(*) from customerservice E1 where E1.id = A.id and E1.Q2='Excellent') AS Q2E1,
(select count(*) from customerservice F1 where F1.id = A.id and F1.Q2='Satisfaction') AS Q2S1,
(select count(*) from customerservice G1 where G1.id = A.id and G1.Q2='Poor') AS Q2P1,
(select count(*) from customerservice H1 where H1.id = A.id and H1.Q2='Excellent') AS Q3E1,
(select count(*) from customerservice J1 where J1.id = A.id and J1.Q2='Satisfaction') AS Q3S1,
(select count(*) from customerservice K1 where K1.id = A.id and K1.Q2='Poor') AS Q3P1,
(select count(*) from instructor B2 where B2.id = A.id and B2.Q1='Excellent') AS Q1E2,
(select count(*) from instructor C2 where C2.id = A.id and C2.Q1='Satisfaction') AS Q1S2,
(select count(*) from instructor D2 where D2.id = A.id and D2.Q1='Poor') AS Q1P2,
(select count(*) from instructor E2 where E2.id = A.id and E2.Q2='Excellent') AS Q2E2,
(select count(*) from instructor F2 where F2.id = A.id and F2.Q2='Satisfaction') AS Q2S2,
(select count(*) from instructor G2 where G2.id = A.id and G2.Q2='Poor') AS Q2P2,
(select count(*) from instructor H2 where H2.id = A.id and H2.Q2='Excellent') AS Q3E2,
(select count(*) from instructor J2 where J2.id = A.id and J2.Q2='Satisfaction') AS Q3S2,
(select count(*) from instructor K2 where K2.id = A.id and K2.Q2='Poor') AS Q3P2,
(select count(*) from runner B3 where B3.id = A.id and B3.Q1='Excellent') AS Q1E3,
(select count(*) from runner C3 where C3.id = A.id and C3.Q1='Satisfaction') AS Q1S3,
(select count(*) from runner D3 where D3.id = A.id and D3.Q1='Poor') AS Q1P3,
(select count(*) from runner E3 where E3.id = A.id and E3.Q2='Excellent') AS Q2E3,
(select count(*) from runner F3 where F3.id = A.id and F3.Q2='Satisfaction') AS Q2S3,
(select count(*) from runner G3 where G3.id = A.id and G3.Q2='Poor') AS Q2P3,
(select count(*) from runner H3 where H3.id = A.id and H3.Q2='Excellent') AS Q3E3,
(select count(*) from runner J3 where J3.id = A.id and J3.Q2='Satisfaction') AS Q3S3,
(select count(*) from runner K3 where K3.id = A.id and K3.Q2='Poor') AS Q3P3
FROM student A
Told you it was ugly...