ZAKI بتاريخ: 4 أغسطس 2015 تقديم بلاغ مشاركة بتاريخ: 4 أغسطس 2015 السلام عليكم ورحمة الله وبركاته عندى جدول بة انقطاعات الموظفين يحتوى على تاريخ الانقطاع و رقم الموظف محتاج استعلام يعرض الأيام المتتالية بناء على براميتر لعدد الايام فمثلا لو قمت بارسال 3 أيام في البراميتر يقوم الاستعلام بأظهار كل الموظفين الذين تجاوزو3 أيام أنقطاع متتالية وفرضا ان موظف كان مسجل انقطاع في 01-01-2015 02-01-2015 ------------------ 05-01-2015 06-01-2015 المفروض عدم اظهار تلك الموظف وشكرا على تعاونكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
haboos بتاريخ: 6 أغسطس 2015 تقديم بلاغ مشاركة بتاريخ: 6 أغسطس 2015 (معدل) السلام عليكم create table emp_11 (emp_id number(5),off_date date); insert into emp_11 values(1,to_date('01012011','ddmmyyyy')); insert into emp_11 values(1,to_date('02012011','ddmmyyyy')); insert into emp_11 values(1,to_date('04012011','ddmmyyyy')); insert into emp_11 values(1,to_date('01012011','ddmmyyyy')); insert into emp_11 values(1,to_date('02012011','ddmmyyyy')); insert into emp_11 values(1,to_date('03012011','ddmmyyyy')); create or replace function get_no_of_days(p_no_of_days number,p_emp_id number) return number is o_date date; n_date date; v_count number:=0; v_1 number; v_2 number:=0; begin v_count:=0; for rec2 in (select off_date from emp_11 where emp_id=p_emp_id order by 1) loop if v_count=0 then o_date:=null; else o_date:=n_date; end if; n_date:=rec2.off_date; v_1:=n_date-nvl(o_date,n_date-1); if v_1 =1 then v_2:=v_2+1; if v_2>=p_no_of_days then exit ; end if; else v_2:=0; end if; v_count:=v_count+1; end loop; return v_2; end; select distinct emp_id from emp_11 where get_no_of_days(3, emp_id)>=3; تم تعديل 6 أغسطس 2015 بواسطة haboos اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 6 أغسطس 2015 تقديم بلاغ مشاركة بتاريخ: 6 أغسطس 2015 بص يا باشا , انت محتاج Self Join وتشوف الحاجات الي طرحها من بعض = 1 بس فكر فيها انت بقى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ZAKI بتاريخ: 9 أغسطس 2015 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 أغسطس 2015 تسلم دماغك يا باشا شكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 9 أغسطس 2015 تقديم بلاغ مشاركة بتاريخ: 9 أغسطس 2015 تسلم دماغك يا باشا شكرا الكود الي فوق اشتغل معاك ؟ لما تلاقى حل ابقى قول عليه عشان غيرك يستفيد . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ZAKI بتاريخ: 9 أغسطس 2015 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 أغسطس 2015 CREATE TABLE HR.ABSENCE_DAYS ( ID NUMBER, ABS_DATE DATE ); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/02/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/19/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/20/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/21/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/22/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/04/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (2, TO_DATE('01/02/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (2, TO_DATE('01/16/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (2, TO_DATE('01/01/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (2, TO_DATE('01/03/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/12/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/18/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/01/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/03/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/11/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (2, TO_DATE('01/13/2014', 'MM/DD/YYYY')); Insert into ABSENCE_DAYS (ID, ABS_DATE) Values (1, TO_DATE('01/14/2014', 'MM/DD/YYYY')); COMMIT; SELECT ID emp_id, ABS_DATE AS "Absence Day" FROM (SELECT curr_date.id, CURR_DATE.ABS_DATE FROM absence_days curr_date, absence_days next_date WHERE CURR_DATE.ID = NEXT_DATE.ID AND next_date.ABS_DATE - CURR_DATE.ABS_DATE = 1 UNION SELECT next_date.id, next_date.ABS_DATE FROM absence_days curr_date, absence_days next_date WHERE CURR_DATE.ID = NEXT_DATE.ID AND next_date.ABS_DATE - CURR_DATE.ABS_DATE = 1) ORDER BY ID, ABS_DATE; لوحد عايز يجرب دة الكود لل Creation and Select statement اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ZAKI بتاريخ: 9 أغسطس 2015 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 9 أغسطس 2015 شكرا على مجهودك الرائع بس المطلوب اظهار الأيام المتتالية لايام الانقطاع وذلك يمكن عن طريق استخدام Self Join كما في الكود المرسل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.