tarek200_jo بتاريخ: 3 مارس 2007 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2007 السلام عليكم و رحمة الله و بركاته إخواني الكرام أريد كتابة جملة Select تقوم بجلب آخر عشر تواريخ تم إدخالها في جدول معين. ولنفرض أن الجدول هو EMP و العمود هو Hiredate فما هي جملة ال select التي يمكن من خالها إسترجاع آخر 10 تواريخ تم إدخالها. select hiredate from emp where.................. بارك الله فيكم أرجو الرد السريع إن أمكن.السلام عليكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
tarek200_jo بتاريخ: 3 مارس 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 3 مارس 2007 نسيت أن أخبركم أن التاريخ يمكن أن يكون مكررا و بالتالي إستخدام أمر Rownum لن يفيد لأنه يمكن أن يرجع لي آخر 10 سجلات و تكون هذه العشر سجلات لنفس التاريخ و لكن السؤال هو أريد آخر عشرة تواريخ مختلفة .يعني لو كان عندي ثلاثة موظفين عينوا في نفس التاريخ إريد أ، يرجع تاريخ واحد فقط. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hanyfreedom بتاريخ: 3 مارس 2007 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2007 هذا هو ما فهمته من كلامك و اتمنى ان يكون صحيح select distinct hiredate from emp where rownum between 1 and 10 order by hiredate desc; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Fabled Warrior بتاريخ: 3 مارس 2007 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2007 السلام عليكم ارجو ان يعمل هذا الكود علما بأننى لم جربه بعد و لكن الفكره صحيحه ان شاء اللهSELECT TO_CHAR(HIRE_DATE,'YYYY')FROM ( SELECT DISTINCT TO_CHAR(HIRE_DATE, ' YYYY ' )FROM EMP )WHERE ROWNUM<=10; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Fabled Warrior بتاريخ: 3 مارس 2007 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2007 SELECT HIRE_DATEFROM ( SELECT DISTINCT TO_CHAR(HIRE_DATE, ' YYYY ' )FROM EMP )WHERE ROWNUM<=10; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
tarek200_jo بتاريخ: 4 مارس 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 مارس 2007 الشكر الجزيل لكل من شارك و كتب ما يفيض به عقله و لكن الحل ليس فيها فلقد قمت بتجربة هذه الخيارات قبل أن أطرح السؤال هنا و لكن دعوني أصيغ ما أريد بطريقة أخرى حتى تصل الفكره واضحة و جليه إن شاء الله.إفترض أنك تريد أن تظهر أعلى 10 رواتب لكل موظفين الشركة ولنفرض أن عدد الموظفين 50 و لكنك تريد أعلى 10 رواتب فقط و هذه الحاله مشابهة بالضبط للمشكلة التي أواجهها فأنا أريد آخر 10 تواريخ مختلفة تم إدخالها.بارك الله فيكم و سدد خطاكم. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
هانى سند بتاريخ: 4 مارس 2007 تقديم بلاغ مشاركة بتاريخ: 4 مارس 2007 السلام عليكم و رحمة الله وبركاته الأخ الكريم ما فهمته انك تريد اظهار اكبر 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 أرجو الاجابة ان كان هذا ما تريد ام لا مع تمنياتي بالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
tarek200_jo بتاريخ: 4 مارس 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 مارس 2007 بارك الله فيك أخي 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 مع العلم أن أسماء الجداول هي الاسماء التي أستخدمها أنا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.