بتاريخ: 1 أبريل 201313 سنة comment_234405 ارجو المساعده في حل المشكلة التالية اود فرز عدد ايام الاجازة علما ان الاجازة تمتد خلال شهران على سبيل المثال عندي اجازة لموظف من تاريخ 28/1/2013 ولغاية 17/2/2013 اود ان يعطيني عند طلب تقرير شهر (1) عدد ايام الاجازة 4 ايام وعند طلب تقرير شهر (2) عدد ايام الاجازة 17 يوم مع الشكر تقديم بلاغ
بتاريخ: 1 أبريل 201313 سنة comment_234410 السلام عليكم استخدم دالة نهاية الشهر لايجاد عدد الايام من بداية التاريخ حتى اخر يوم فى نفس الشهرlast_day بالنسبة لاحالتك يبقى الوضع كلاتى اخر يوم فى شهر يناير هو 31 اذن عدد الايام=31-28 اخر يوم فى الاجازة فى شهرفبراير هو 17 واول يوم هو 1 اذن 18-1 لان طبع اول يوم فى كل شهر هو رقم 1 all day=last_day(jan)-28+18-1 معكم ولكم نتواصل تقديم بلاغ
بتاريخ: 1 أبريل 201313 سنة comment_234411 u can give this function first date of u month and end date if u make grouping by month trunc(paramter_date,'MM') "First Day of Month" last_day(paramter_date) "Last Day of Month" u need year also -- just month cant be right /******************************/ FUNCTION GET_VACATION_DAYS (P$EMP_ID NUMBER, P$FROM_DATE DATE, P$TO_DATE DATE) RETURN NUMBER IS V_NUMBERS NUMBER; V_COUNT NUMBER; V_START_SATE DATE; V_CHECK VARCHAR2 (200); BEGIN V_START_SATE := P$FROM_DATE; V_COUNT := (P$TO_DATE - P$FROM_DATE) + 1; V_NUMBERS := 0; FOR I IN 1 .. V_COUNT LOOP V_CHECK := NULL; SELECT 'X' INTO V_CHECK FROM VACATION_TABLE WHERE V_START_SATE BETWEEN DATA_START_COLUMN AND DATA_END_COLUMN AND EMP_ID = P$EMP_ID; IF V_CHECK IS NOT NULL THEN V_NUMBERS := V_NUMBERS + 1; ELSE V_NUMBERS := V_NUMBERS; END IF; V_START_SATE := V_START_SATE + 1; END LOOP; RETURN V_NUMBERS; END; تم تعديل 1 أبريل 201313 سنة بواسطة mo7asb تقديم بلاغ
بتاريخ: 2 أبريل 201313 سنة comment_234438 ودى كويرى هييه فكرة بس الاحسن تعملها فانكشن SELECT TRUNC ( DATE_S ,'mm') , COUNT (1) COUNT_DAYS ,EMPLOYEE_ID FROM (SELECT D_COUNT.DATE_S , EMP.EMPLOYEE_ID , EMP.HIRE_DATE FROM EMPLOYEES EMP, ( SELECT TO_DATE ( :F_DATE ,'dd-mm-yyyy') + LEVEL -1 DATE_S FROM DUAL CONNECT BY LEVEL <= TO_DATE ( :T_DATE ,'dd-mm-yyyy') -TO_DATE ( :F_DATE ,'dd-mm-yyyy') +1 ) D_COUNT WHERE --EMPLOYEE_ID =198 and D_COUNT.DATE_S BETWEEN START_VACATION_COLUMN AND END_VACATION_COLUMN ) GROUP BY TRUNC (DATE_S ,'mm') ,EMPLOYEE_ID ORDER BY EMPLOYEE_ID ; تقديم بلاغ
بتاريخ: 3 أبريل 201313 سنة كاتب الموضوع comment_234489 اخواني شاكر لكم جميعا لكن هل يمكن وضعها في جملة select اذا سمحتوا علما اني اريد ان ادخل له الشهر فيعطيني عدد ايام اجازات الموظف خلال هذ الشهر على المثال الموجود اذا استفسرت عن دواد شهر (كانون اول) يعطيني عدد ايام اجازات الموظف 4 ايام واذا استفسرت عن دوام شهر (شباط) يعطيني عدد ايام اجازات الموظف 17 يوما تقديم بلاغ
بتاريخ: 3 أبريل 201313 سنة comment_234516 استخدمى جملة السيلكت اللى فوق بس لازن تديله سنه مع الشهر ما ينفعشى شهر لوحده والا هايجيلك شهر شباط لجميع السنينضيفى شرط واديله التاريه اللى انتى عاوزها واعملى له ترنك where TRUNC (DATE_S ,'mm') ,=$date تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.