الانتقال إلى المحتوى

جلب (إظهار) آخر عشرة تواريخ


tarek200_jo

Recommended Posts

السلام عليكم و رحمة الله و بركاته
إخواني الكرام

أريد كتابة جملة Select تقوم بجلب آخر عشر تواريخ تم إدخالها في جدول معين. ولنفرض أن الجدول هو EMP و العمود هو Hiredate فما هي جملة ال select التي يمكن من خالها إسترجاع آخر 10 تواريخ تم إدخالها.


select hiredate from emp
where..................



بارك الله فيكم أرجو الرد السريع إن أمكن.

السلام عليكم

رابط هذا التعليق
شارك

نسيت أن أخبركم أن التاريخ يمكن أن يكون مكررا و بالتالي إستخدام أمر Rownum لن يفيد لأنه يمكن أن يرجع لي آخر 10 سجلات و تكون هذه العشر سجلات لنفس التاريخ و لكن السؤال هو أريد آخر عشرة تواريخ مختلفة .
يعني لو كان عندي ثلاثة موظفين عينوا في نفس التاريخ إريد أ، يرجع تاريخ واحد فقط.

رابط هذا التعليق
شارك

هذا هو ما فهمته من كلامك و اتمنى ان يكون صحيح


select distinct hiredate from emp
where rownum between 1 and 10
order by hiredate desc;
رابط هذا التعليق
شارك

السلام عليكم ارجو ان يعمل هذا الكود علما بأننى لم جربه بعد و لكن الفكره صحيحه ان شاء الله


SELECT TO_CHAR(HIRE_DATE,'YYYY')
FROM ( SELECT DISTINCT TO_CHAR(HIRE_DATE, ' YYYY ' )
FROM EMP )
WHERE ROWNUM<=10;

رابط هذا التعليق
شارك

الشكر الجزيل لكل من شارك و كتب ما يفيض به عقله و لكن الحل ليس فيها فلقد قمت بتجربة هذه الخيارات قبل أن أطرح السؤال هنا و لكن دعوني أصيغ ما أريد بطريقة أخرى حتى تصل الفكره واضحة و جليه إن شاء الله.

إفترض أنك تريد أن تظهر أعلى 10 رواتب لكل موظفين الشركة ولنفرض أن عدد الموظفين 50 و لكنك تريد أعلى 10 رواتب فقط و هذه الحاله مشابهة بالضبط للمشكلة التي أواجهها فأنا أريد آخر 10 تواريخ مختلفة تم إدخالها.

بارك الله فيكم و سدد خطاكم.

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله وبركاته

الأخ الكريم
ما فهمته انك تريد اظهار اكبر 10 تواريخ مع استبعاد التكرار

و اعتقد ان هذه السيليكت تقوم بذلك
و هي نفس سيليكت الtop n view
و لكن مع اضافة distinct في الsubquery فقط

SELECT ROWNUM RANK, hiredate
 FROM (SELECT DISTINCT hiredate
			   FROM emp
			  WHERE hiredate IS NOT NULL
		   ORDER BY hiredate DESC)
WHERE ROWNUM <= 10



أرجو الاجابة ان كان هذا ما تريد ام لا
مع تمنياتي بالتوفيق

رابط هذا التعليق
شارك

بارك الله فيك أخي Hanon_OCP مشكور على جهدك الطيب ....نعم هذا ما قصدته بالضبط و قد حلت لي مشكلتي .
بارك الله فيك و سدد خطاك مع أنني كنت أستخدم Select معقده جدا أعرضها هنا ليستفيد الجميع إن شاء الله.


SELECT DISTINCT "Load Date"
FROM
( SELECT ROWNUM "RN",substation_name,TO_CHAR(load_date,'dd-mm-yyyy') "Load Date",
(SELECT MAX(ROWNUM)-10 FROM substation_def,subs_outage_loads WHERE
substation_def.substation_no=subs_outage_loads.substation_no ) "max-10" ,
(SELECT MAX(ROWNUM) FROM substation_def,subs_outage_loads WHERE
substation_def.substation_no=subs_outage_loads.substation_no ) "max"
FROM substation_def,subs_outage_loads
WHERE substation_def.substation_no=subs_outage_loads.substation_no )

WHERE "RN" > "max-10" ORDER BY "Load Date" DESC




مع العلم أن أسماء الجداول هي الاسماء التي أستخدمها أنا

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية