2016-10-30 5 views
0

in meiner Tabelle TeilnahmemySQL Select Query Statement

Insert Into tblAttendance(cEmpID,cCode,dDate,notMin) Values 
('1000','R' , 120,'2016-10-27'), 
('1000','R' , 120,'2016-10-28'), 
('1000','S' , 120,'2016-10-29'), 
('1000','L' , 120,'2016-10-30'), 
('1001','R' , 120,'2016-10-27'), 
('1001','R' , 120,'2016-10-28'), 
('1001','S' , 120,'2016-10-29'), 
('1001','L' , 120,'2016-10-30') 

ich brauche alle OT Min zu summieren. pro-Code der Ausgang so etwas wie diese .. EmpID, R-Total, S-Total, L-Gesamt

hier ist meine Beispielabfrage

Select (Select sum(nOTMin) from tblattenddetail Where cCode='R') 'R-Total', 
     (Select sum(nOTMin) from tblattenddetail Where cCode='S') 'S-Total', 
     (Select sum(nOTMin) from tblattenddetail Where cCode='L') 'L-Total' 

i die cEmpID Fügen Sie müssen .. Bitte um Hilfe Ich werde dies überarbeiten, um die cEmpID einzuschließen.

Antwort

1

Sie können einen Case-Ausdruck verwenden, um die korrekten Werte bedingt zu aggregieren. Dies sollte das tun, was Sie wollen:

SELECT 
    cEmpID, 
    SUM(CASE WHEN cCode='R' THEN nOTMin ELSE 0 END) AS 'R-Total', 
    SUM(CASE WHEN cCode='S' THEN nOTMin ELSE 0 END) AS 'S-Total', 
    SUM(CASE WHEN cCode='L' THEN nOTMin ELSE 0 END) AS 'L-Total' 
FROM tblAttendance 
GROUP BY cEmpID 

Sample SQL Fiddle

+1

Warum mir niemand gesagt, dass Sie einfache Anführungszeichen für Spaltenaliasnamen verwenden kann? Das würde mich wie 5 Minuten meines Lebens retten ;-) –