بتاريخ: 8 يوليو 200718 سنة comment_104355 الاخوة الاعزاء .... ممكن ان تشاركني التفكير و ان تحل معي هذة الجملة السهله المعقدة .... ستعرف كيف الان ...اليك الجدول التالي ..بيانات الخدمات المقدمة للعملاء و فترة تقديم هذه الخدمة ____________________________________________ _________TDATE FDATE SERV_ID CUST_ID____________________________________________ _________31-12-2007 01-04-2007 99998 1001____________________________________________ _________30-05-2007 01-05-2007 99985 1002____________________________________________ _________15-06-2007 15-05-2007 94564 1003____________________________________________ _________01-05-2007 01-04-2007 68592 1005____________________________________________ _________15-06-2007 15-05-2007 56955 2015____________________________________________ _________كود العميل رقم الخدمة بداية الخدمة نهاية الخدمةمفيش مشكلة ... المطلوب ......... محتاج الى جملة select تستخرج جميع العملاء المستحق لهم خدمات خلال فترة معينةيعني لو عاوز جميع العملاء الذين لهم خدمات خلال شهر 5 حتى و لو مدة هذه الخدمة يوم واحدلاحظ الجدول السابق ان جميع الخدمات في الجدول تستحق النتفيذ في شهر 5الا ان هنالك خدمات مثلا تخص تبدأ من شهر 4 و تنتهي في نهاية السنة .. انا اريدها ان تظهر ايضا لان جزء منها يقع في شهر 5 مثل رقم الخدمة 999998لو فية اي شيء مش واضح برجاء الرد تقديم بلاغ
بتاريخ: 8 يوليو 200718 سنة comment_104365 الاخ الكريمالموضوع ساهل ان شاء اللهكل اللي هتعمله انك هتزود شرطand my_date >=f_dateand my_date <=t_dateده اصلا علي الجمله بتاعتك العاديةيارب يكون ده المطلوبسلام تقديم بلاغ
بتاريخ: 8 يوليو 200718 سنة comment_104402 السلام عليكم ورحمة اللهنفس فكرة الأخ TimorSelect CUST_ID,SERV_ID,TDATE,FDATE where TDATE<= my_date and FDATE >=my_date تقديم بلاغ
بتاريخ: 9 يوليو 200718 سنة comment_104448 السلام عليكم ورحمة اللهتصحيحنفس فكرة الأخ TimorSelect CUST_ID,SERV_ID,TDATE,FDATE From TableWhere TDATE<= my_date and FDATE >=my_date;اتمنى ان تكون المطلوب .......... مع تحياتي تقديم بلاغ
بتاريخ: 9 يوليو 200718 سنة كاتب الموضوع comment_104469 الاجابة ليست صحيحة ......سوف اوضح اكثر ...لو جربت الجملة التالية سوف تكون النتيجة التالية 30 -05 -2007 01 -05 -2007 99985 1002 مع العلم ان جميع الفترات السابقة يوجد بها خدمات للعملاء .....اي ان النتيجة السليمة هو اظهار الجدول السابق كاملاً .... لانه كما هو موضح فأن شهر 5 موجود في جميع الاسطر في الجدول و بالتالي عند استعراض ما هي الحدمات المستحقة في شهر 5 لابد ان يذكر جميع الخدمات . حتى و لو كانت تستحق يوم واحد من شهر 5 كما هو في رقم الخدمةرقم الخدمة 68592 الخاصة بالعميل 1005حيث ان الخدمة تبدأ من 1-4-2007 و تنتهي في 1-5-2007اي ما زال هناك يوم واحد للخدمة في شهر 5 لا بد ان يظهر في التقرير ما باقي الخدمات التي تخص شهر 5 تقديم بلاغ
بتاريخ: 9 يوليو 200718 سنة comment_104480 الأخ/محمد يسنالسلام عليكم ورحمة الله وبركاتهأعتقد أن هذا الكود يفي بالغرض إذا فهت قصدكselect * from customer_Servicewhere (fdate<=yourdate or tdate>=yourdate) تقديم بلاغ
بتاريخ: 10 يوليو 200718 سنة كاتب الموضوع comment_104521 للأسف .... الكود السابق . سوف تكون النتيجة خاطئة ... لماذا .... لو ان هناك السجل الاول ID 1001FDATE = 1-04-2007TDATE = 31-12-2007رغم ان هناك خدمة تخص شهر 5 خلال الفترة ... الا انها لن تخرج في التقرير ...لانك تطلب FDATE <= 1-05-2007ORTDATE <=31-05-2007للاسف النتيجة غير صحيحة ..عفوا ...للأسف .... الكود السابق . سوف تكون النتيجة خاطئة ... لماذا .... لو ان هناك السجل الاول ID 1001FDATE = 1-04-2007TDATE = 31-12-2007رغم ان هناك خدمة تخص شهر 5 خلال الفترة ... الا انها لن تخرج في التقرير ...لانك تطلبFDATE >= 1-05-2007ORTDATE <=31-05-2007للاسف النتيجة غير صحيحة .. تقديم بلاغ
بتاريخ: 10 يوليو 200718 سنة comment_104551 السلام عليكم ورحمة الله وبركاتهاخي الكريمجرب الكود التالي Select cust_id , serv_id , fdate , tdate From table_name Where to_number(to_char(fdate,’mm’)) = &p1 or to_number(to_char(fdate,’mm’)) < &p1 and to_number(to_char(tdate,’mm’)) >= &p1; جزاكم الله كل خير تقديم بلاغ
بتاريخ: 11 يوليو 200718 سنة comment_104618 السلام عليكم ورحمته الله وبركاتهالحل وبكل بساطة select cust_id from customer where to_date(05,'mm') between fdate and tdateالطريقة مجربة, وان شاء الله تكون صحيحةوبارك الله فيكم والسلام عليكم ورحمته الله وبركاته تقديم بلاغ
بتاريخ: 11 يوليو 200718 سنة كاتب الموضوع comment_104629 الاخوة الاعزاء ........ انا مشكور جدا جدا ُ......... على المشاركات الطيبة و أسأل الله العظيم رب العرش الكريم ان يجازيكم خيراً ... الا ان الاجابات غير سليمة ..........المشكلة ... ان الجميع يفكر فقط في الشهر الذي تستحق الخدمة فقط ... و تبني جملة الاستعلام عليها ........... رغم ان المثال يوضح ان هناك خدمات كثيرة تبدأ من شهر غير الشهر الذي فية الخدمة ..... و لا يؤخذ في الحسبان ... و ان هناك خدمات تنتهي في شهر لاحق للشهر المستحق له الخدمة و ايضاً لا يوخذ في الحسبان .......[/size]سوف اوضح المثال اكثر ............الخدمة رقم 1001 تبدأ من 1 - 4 - 2007 و تنتهي في 31 -12 -2007تمام .............يعني لو استخرجت التقرير عن الخدمات التي تخص شهر 4 سوف يظهر رقم الخدمة1001 لانة جزء منه يقع في شهر 4و اذا استخرجت التقرير عن الخدمات التي تخص شهر 5 سوف يظهر رقم الخدمة 1001 ايضا لانة جزء منه يقع في شهر 5و يستمر ظهور رقم الخدمة 1001 حتي شهر 12 لانة جزء منه يقع في شهر 12و اذا اردت اظهر تقرير يوضح رقم الخدمة و الشهور التي تقع فيها يظهر التالي ....... Serv_id Monthes ----------------------------------------- 1001 April 1001 May 1001 June 1001 july 1001 August 1001 September 1001 october 1001 November 1001 December انا قلت في ابداية انها سهلة و معقدة ................. اي انها سهلة لاول وهله .... لكن الحل صعب .......جزاكم الله خيرا ....اتمني الكثير من المشاركات تقديم بلاغ
بتاريخ: 11 يوليو 200718 سنة comment_104643 select * from TABLE_NAMEwhere to_number('20070501') between to_number(to_char('تاريخ بداية الخدمة','yyyymmdd')) and to_number(to_char('تاريخ نهاية الخدمة','yyyymmdd'))حيث ان '20070501' يمثل اول يوم في الشهر الذي تريد البحث عنهجربها واخبرني ان نجحت تقديم بلاغ
بتاريخ: 11 يوليو 200718 سنة comment_104654 السلام عليكم ورحمة الله وبركاته SQL> select * from aaa; CUST_ID SERV_ID FDATE TDATE ---------- ---------- -------- -------- 1001 99998 01/04/07 31/12/07 1002 99985 01/05/07 30/05/07 1003 94564 15/05/07 15/06/07 1005 68592 01/04/07 01/05/07 1015 56955 05/05/07 15/06/07 SQL> Select cust_id , serv_id , fdate , tdate 2 From aaa 3 Where to_number(to_char(fdate,'mm')) = &p1 or 4 to_number(to_char(fdate,'mm')) < &p1 and to_number(to_char(tdate,'mm')) >= &p1; Enter value for p1: 5 old 3: Where to_number(to_char(fdate,'mm')) = &p1 or new 3: Where to_number(to_char(fdate,'mm')) = 5 or Enter value for p1: 5 Enter value for p1: 5 old 4: to_number(to_char(fdate,'mm')) < &p1 and to_number(to_char(tdate,'mm')) >= &p1 new 4: to_number(to_char(fdate,'mm')) < 5 and to_number(to_char(tdate,'mm')) >= 5 CUST_ID SERV_ID FDATE TDATE ---------- ---------- -------- -------- 1001 99998 01/04/07 31/12/07 1002 99985 01/05/07 30/05/07 1003 94564 15/05/07 15/06/07 1005 68592 01/04/07 01/05/07 1015 56955 05/05/07 15/06/07 SQL> / Enter value for p1: 4 old 3: Where to_number(to_char(fdate,'mm')) = &p1 or new 3: Where to_number(to_char(fdate,'mm')) = 4 or Enter value for p1: 4 Enter value for p1: 4 old 4: to_number(to_char(fdate,'mm')) < &p1 and to_number(to_char(tdate,'mm')) >= &p1 new 4: to_number(to_char(fdate,'mm')) < 4 and to_number(to_char(tdate,'mm')) >= 4 CUST_ID SERV_ID FDATE TDATE ---------- ---------- -------- -------- 1001 99998 01/04/07 31/12/07 1005 68592 01/04/07 01/05/07 SQL> / Enter value for p1: 3 old 3: Where to_number(to_char(fdate,'mm')) = &p1 or new 3: Where to_number(to_char(fdate,'mm')) = 3 or Enter value for p1: 3 Enter value for p1: 3 old 4: to_number(to_char(fdate,'mm')) < &p1 and to_number(to_char(tdate,'mm')) >= &p1 new 4: to_number(to_char(fdate,'mm')) < 3 and to_number(to_char(tdate,'mm')) >= 3 no rows selected SQL> / Enter value for p1: 6 old 3: Where to_number(to_char(fdate,'mm')) = &p1 or new 3: Where to_number(to_char(fdate,'mm')) = 6 or Enter value for p1: 6 Enter value for p1: 6 old 4: to_number(to_char(fdate,'mm')) < &p1 and to_number(to_char(tdate,'mm')) >= &p1 new 4: to_number(to_char(fdate,'mm')) < 6 and to_number(to_char(tdate,'mm')) >= 6 CUST_ID SERV_ID FDATE TDATE ---------- ---------- -------- -------- 1001 99998 01/04/07 31/12/07 1003 94564 15/05/07 15/06/07 1015 56955 05/05/07 15/06/07 اخي الكريم الكود السابق يعمل في حال وجود سنة مالية واحدة في الجدولوعدم تداخل العقود بين سنه مالية سابقة وسنه مالية لاحقةاما في حال أن الجدول يحتوي علي اكثر من سنة مالية فيجب إضافة السنة المالية في متغير ثانيجزاك الله كل خير تقديم بلاغ
بتاريخ: 11 يوليو 200718 سنة كاتب الموضوع comment_104658 جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................جزاك الله خيراُ ..........................مشكوووووووووووووووووووووووووووووور جداُمشكوووووووووووووووووووووووووووووور جداُمشكوووووووووووووووووووووووووووووور جداُ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.