Reputation: 23
INSERT INTO COD_HRM_ADVICED_MONTH_DETAIL
(EMPLOYEE_ID,MONTH_ID,TOTAL_PRESENT,TOTAL_ABSENT,TOTAL_LEAVE,ACTION_ON,ACTION_BY,ACTION_TYPE,PROJECT_ID,COMPANY_ID)
SELECT A.EMPLOYEE_ID,'25',
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='P' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS PRESENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='A' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS ABSENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='L' AND to_char(ATTENDANCE_DATE, 'mm')='' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS LEAVE,
'10-Aug-21','1','Insert','4','2'
FROM COD_HRM_ATTENDANCE A GROUP BY EMPLOYEE_ID
I get the detail of all the present absent and leave employee in different column now I want to sum of these column for every single employee.
1:
Upvotes: 0
Views: 56
Reputation: 23
SELECT A.EMPLOYEE_ID,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='P' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS PRESENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='A' AND to_char(ATTENDANCE_DATE, 'mm')='08'
AND to_char(ATTENDANCE_DATE, 'yy')='21'
AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS ABSENT,
(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE ATTENDANCE_TYPE='L' AND to_char(ATTENDANCE_DATE, 'mm')='08' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS LEAVE
,(SELECT COUNT(*) FROM COD_HRM_ATTENDANCE
WHERE to_char(ATTENDANCE_DATE, 'mm')='08' AND EMPLOYEE_ID=A.EMPLOYEE_ID) AS TOTAL
FROM COD_HRM_ATTENDANCE A GROUP BY EMPLOYEE_ID
i solved this problem by count all without giving any attendance type
Upvotes: 1