السلام عليكم ورحمة الله وبركاته
لدى ثلاثة جدول
1. Day_Off
اقتباس
[emplo_id] ,[day_date] ,[day_state] ,[day_work_hours] ,[part_time] ,[over_time] ,[all_day_hours]
2. Emplo_Data
اقتباس
[emplo_id],[emplo_name] ,[job_id] ,[Sat] ,[Sun] ,[Mon] ,[Tue] ,[Wed] ,[Thu] ,[agazat] ,[over_time_stock] ,[hours_target] ,[work_hours], [sallary], [day_work_mony] ,[hour_work_mony]
3. Emplo_Geza_Log
اقتباس[geza_date] ,[geza_id],[emplo_id] ,[geza_mony]
ثم قمت بعمل إستعلام يقوم بحساب إجمالى عدد الساعات لكل موظف كذلك يقوم بحساب إجمالى عدد أيام الغياب والأجازات حسب نوعها والمأموريات لكل موظف على يكون الشكل النهائى فى النهاية هو ( سطر واحد لكل موظف يشمل جميع البيانات الشهرية الخاصة به )
SELECT day_off.emplo_id,
emplo_data.emplo_name,
emplo_data.hours_target,
emplo_data.day_work_mony,
emplo_data.hour_work_mony,
emplo_data.sallary,
RIGHT('00' + LTRIM(STR(SUM(DATEDIFF(MINUTE, '00:00', CONVERT(time, day_off.all_day_hours, 8))) / 60)), 2) + ':' + RIGHT('00' + LTRIM(STR(SUM(DATEDIFF(MINUTE, '00:00', CONVERT(time, day_off.all_day_hours, 8))) % 60)), 2) AS Total_Hours,
COUNT(CASE WHEN day_off.day_state = N'مأمورية' THEN day_state END) AS مأمورية,
COUNT(CASE WHEN day_off.day_state = N'أجازة خاصة' THEN day_state END) AS [أجازة خاصة],
COUNT(CASE WHEN day_off.day_state = N'أجازة سنوية' THEN day_state END) AS [أجازة سنوية],
COUNT(CASE WHEN day_off.day_state = N'أجازة مرضية' THEN day_state END) AS [أجازة مرضية],
COUNT(CASE WHEN day_off.day_state = N'أجازة زواج' THEN day_state END) AS [أجازة زواج],
COUNT(CASE WHEN day_off.day_state = N'أجازة عزاء' THEN day_state END) AS [أجازة عزاء],
COUNT(CASE WHEN day_off.day_state = N'غياب بإذن' OR day_off.day_state = N'غياب بدون إذن' THEN day_off.day_state END) AS [يوم غياب],
CASE WHEN (SUM(CASE WHEN emplo_geza_log.geza_mony > 0 THEN emplo_geza_log.geza_mony END)) IS Null THEN '0' ELSE (SUM(CASE WHEN emplo_geza_log.geza_mony > 0 THEN emplo_geza_log.geza_mony END)) END AS [قيمة الجزاءات]
FROM emplo_geza_log RIGHT OUTER JOIN day_off ON emplo_geza_log.emplo_id = day_off.emplo_id LEFT OUTER JOIN emplo_data ON day_off.emplo_id = emplo_data.emplo_id
GROUP BY emplo_data.emplo_name, emplo_data.hours_target, emplo_data.sallary, emplo_data.hour_work_mony, emplo_data.day_work_mony, day_off.emplo_id
ORDER BY day_off.emplo_idوالأن تكمن المشكلة لدى فى الأتى
1. كيف يمكننى الحصول على البيانات من الإستعلام السابق ولكن بين تاريخين ( البيانات من day_off و emplo_geza_log ) تكون بين نفس التاريخين لأننى عندما أضيف حقل التاريخ day_off.day_date وحقل التاريخ فى الجدول الأخر emplo_geza_log.geza_date يحدث تكرار لإسم الموظف فى أكثر من سطر