بتاريخ: 21 يناير 201016 سنة comment_182922 السلام عليكم ورحمة الله ،،احتاج لمعرفة sequence gap ،، اي الفراغات الموجودة في الجدول (اي بين الارقام،،اذا كانت الارقم مثلا:1-2-3-6-7-9 ...الخ)احتاج ان يعطيني الارقام الساقطة لدي وهي (4-5-8)بحثت فوجدت هذه الجمله : SELECT measurement_id - gap gap_from, measurement_id - 1 gap_to FROM ( SELECT measurement_id, CASE measurement_id - NVL((LAG(measurement_id) OVER (ORDER BY measurement_id)),0) WHEN 1 THEN 0 ELSE measurement_id - (LAG(measurement_id)OVER (ORDER BY measurement_id)) -1 END gap FROM sensor_data ) WHERE gap > 0; Output will look like:-GAP_FROM GAP_TO3 36 68 9المشكله : اذا كان الفراغ غالموجود اكثر من رقم (مثل 2-3-8) يجب ان احصل على (4-5-6-7) ولكن احصل على انه توجد مسافات مابين ال3 وال 8 وانا اريد التفصيلهل من طريقة لتفصيل الارقام ارجو افادتي ،، حتى لو بطريقة اخرىمع الشكر تقديم بلاغ
بتاريخ: 21 يناير 201016 سنة comment_182943 السلام عليكم أنا عملت جملة select تفي بالغرض وأعتقد أنها ممكن تتعمل بفانكشن هتكون أحسن وأشيكفمثلا لو عندنا جدول يسمى emp وبه col يعتبر serial وحدث به gab لو عملنا هذا الquery بإذن الله هتطلع النتيجة select serial from emp union select rownum from(select serial from emp union select rownum from emp ) minus select serial from emp; وفقك الله تقديم بلاغ
بتاريخ: 21 يناير 201016 سنة comment_182972 اعتقد هذا الكود مناسب لك DECLARE x NUMBER (10); y NUMBER (10); z NUMBER (10); BEGIN SELECT MIN (yr_field) INTO x FROM table_name; SELECT MAX (yr_field) INTO y FROM table_name; FOR i IN x .. y LOOP SELECT COUNT (yr_field) INTO z FROM table_name WHERE yr_field = i; IF z = 0 THEN DBMS_OUTPUT.put_line (i); END IF; END LOOP; END; تقديم بلاغ
بتاريخ: 21 يناير 201016 سنة comment_182984 حلول وافكار جميلة ولو ممكن ازود طريقة تفكير تانية بسيطةفرضا اريد ان اظهر الجاب بين رقم 5 و100 لفيلد emp_idelect rownum from(select emp_id,rownum from emp order by emp_id)where emp_id<>row_num+5لو المسلسل يبدا من واحد مش محتاج ازود 5 تقديم بلاغ
بتاريخ: 26 يناير 201016 سنة كاتب الموضوع comment_183344 السلام عليكم أنا عملت جملة select تفي بالغرض وأعتقد أنها ممكن تتعمل بفانكشن هتكون أحسن وأشيكفمثلا لو عندنا جدول يسمى emp وبه col يعتبر serial وحدث به gab لو عملنا هذا الquery بإذن الله هتطلع النتيجةselect serial from emp union select rownum from(select serial from emp union select rownum from emp ) minus select serial from emp; وفقك الله الاخ الكريم تم تجربة الكود ونفع تماما ،، ولكن كيف استعمله في البروسيجر ،، فأنا لا اريد تشغيله على sql تقديم بلاغ
بتاريخ: 26 يناير 201016 سنة كاتب الموضوع comment_183345 السلام عليكم أنا عملت جملة select تفي بالغرض وأعتقد أنها ممكن تتعمل بفانكشن هتكون أحسن وأشيكفمثلا لو عندنا جدول يسمى emp وبه col يعتبر serial وحدث به gab لو عملنا هذا الquery بإذن الله هتطلع النتيجةselect serial from emp union select rownum from(select serial from emp union select rownum from emp ) minus select serial from emp; وفقك الله الاخ الكريم تم تجربة الكود ونفع تماما ،، ولكن كيف استعمله في البروسيجر ،، فأنا لا اريد تشغيله على sql ااسف للخطأ ،، كان هذا الكلام موجه للاخ الكريم احمد جادومع الشكر تقديم بلاغ
بتاريخ: 26 يناير 201016 سنة comment_183348 في حالة Forms يمكنك عمل داتا بلوك على الشاشة وليكن اسمه blk وبه تكست أيتم وليكن اسمه txt1 وتقوم بعمل زر وتكتب بداخله البروسيدجر كالتالي: DECLARE x NUMBER (10); y NUMBER (10); z NUMBER (10); BEGIN SELECT MIN (yr_field) INTO x FROM table_name; SELECT MAX (yr_field) INTO y FROM table_name; go_block('blk'); first_record; FOR i IN x .. y LOOP SELECT COUNT (yr_field) INTO z FROM table_name WHERE yr_field = i; IF z = 0 THEN :blk.txt1 := i; next_record; END IF; END LOOP; END; تقديم بلاغ
بتاريخ: 26 يناير 201016 سنة كاتب الموضوع comment_183353 في حالة Forms يمكنك عمل داتا بلوك على الشاشة وليكن اسمه blk وبه تكست أيتم وليكن اسمه txt1 وتقوم بعمل زر وتكتب بداخله البروسيدجر كالتالي:DECLARE x NUMBER (10); y NUMBER (10); z NUMBER (10); BEGIN SELECT MIN (yr_field) INTO x FROM table_name; SELECT MAX (yr_field) INTO y FROM table_name; go_block('blk'); first_record; FOR i IN x .. y LOOP SELECT COUNT (yr_field) INTO z FROM table_name WHERE yr_field = i; IF z = 0 THEN :blk.txt1 := i; next_record; END IF; END LOOP; END; الرد وافي جزاك الله خيرا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.