جلب بيانات من عدة اعمدة بشرط في Sql Group By
#1
السلام عليكم ورحمة الله وبركاته
السادة الكرام

لدي table1 وفيه 3 اعمدة (id-salary-date1) ولكل id له اكثر من salary بتواريخ مختلفة

المطلوب: جلب اخر  salary مع اخر date1 لكل id

في query وضعت الكود فجلب فقط اخر تاريخ لكل id - فكيف اجلب معه راتب نفس التاريخ
كود :
select id, max(date1) as date1 from Table1 group by id;

جزاكم الله كل خير


الملفات المرفقة
.jpg   1.jpg (الحجم : 64.57 ك ب / التحميلات : 12)
.rar   Group By.rar (الحجم : 5.03 ك ب / التحميلات : 24)
الرد
#2
وعليك السلام ورحمة الله وبركاته

الحل أنت تعرفه ، نفس الأمر مع date تفعله مع الاجر

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
[-] كل من 2 users say قال شكرا ل larbiparadox على المشاركة المفيدة
  • samnaj00, fars74
الرد
#3
استاذي الكريم

لا أريد تجميعاُ للاجر
بل اريد  الاجر فقط مع نفس التاريخ الاخير
و هذا الكود يعطي خطأ

كود :
select id , salary, max(date1) as date1 from Table1 group by id
الرد
#4
(09-02-2021, 04:36 PM)samnaj00 كتب : استاذي الكريم

لا أريد تجميعاُ للاجر
بل اريد  الاجر فقط مع نفس التاريخ الاخير
و هذا الكود يعطي خطأ

كود :
select id , salary, max(date1) as date1 from Table1 group by id

هذه تعطي اكبر قيمة لا تقوم بالجمع

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;

[صورة: 471477879.png]
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
[-] كل من 1 user says قال شكرا ل larbiparadox على المشاركة المفيدة
  • samnaj00
الرد
#5
[quote pid="52743" dateline="1612898957"]
هذه تعطي اكبر قيمة لا تقوم بالجمع

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;


[/quote]

 توضيح للمطلوب : جلب اخر راتب مع تاريخ الراتب لكل ID . فما هو السبيل لذلك؟؟


حزاك الله كل خير

سؤال من فضلك  . طريقة ادراج صورة في المشاركة دون ارفاقها . مثل مشاركتك
الرد
#6
عملية وضع الصورة
[صورة: 603716077.png]
1 - إقونة الصورة
2 - رابط الصورة و بعدها نضغط على إدخال

لرفع صورة تحتاج موقع يدعمه المنتدى لتحميل الصور

* توجد عدة مواقع لرفع الصور من بينها 0zz0

[صورة: 519826685.png]

 01 - فتح الصورة التي تكون مخزنة في جهازك
 02 - تضغط للرفع
 03 - نسخ الرابط و وضعه كما هو مشروح في عملية وضع الصورة
[-] كل من 1 user says قال شكرا ل embarcadero على المشاركة المفيدة
  • samnaj00
الرد
#7
[صورة: 865401637.jpg]
الرد
#8
كود :
SELECT T1.id, T1.salary, T1.date1  FROM Table1 T1 WHERE  T1.id in (select T2.id from Table1 T2 group by T2.id) and T1.date1 in  (select  max(T2.date1) as date1 from Table1 T2 group by T2.id)
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
[-] كل من 1 user says قال شكرا ل larbiparadox على المشاركة المفيدة
  • samnaj00
الرد
#9
(12-02-2021, 11:54 PM)larbiparadox كتب :
كود :
SELECT T1.id, T1.salary, T1.date1  FROM Table1 T1 WHERE  T1.id in (select T2.id from Table1 T2 group by T2.id) and T1.date1 in  (select  max(T2.date1) as date1 from Table1 T2 group by T2.id)


استاذي الكريم



جزاك الله كل خير و ونفعنا بعلمك وخبرتك




فالخبرة والصنعة واضحة




طيب استاذي الكريم : لو كان التاريخ 3/3/2021 مكرراً مرتين ولكل تاريخ له راتب مختلف عندئذ سيظهر التاريخان في الاستعلام مع راتبيهما
كيف نجلب اخر تاريخ مع الراتب؟

-----------------------------------------------------------------
وجدت الحل المناسب بعد اضافة حقل Auto للـ Table1 نوعه Autoinc
كود :
drop table memory tmp_table2; SELECT T1.id,T1.salary,T1.date1,T1.auto,T1.daen,T1.note into memory tmp_table2 FROM Table1 T1 WHERE  T1.id in(select T2.id from Table1 T2 group by T2.id) and T1.date1 in(select max(T2.date1) as date1 from Table1 T2 group by T2.id); SELECT T2.id, T2.salary,T2.date1,T2.auto,T2.daen,T2.note FROM memory tmp_table2 T2 WHERE  T2.id in(select T3.id from memory tmp_table2 T3 group by T3.id) and T2.auto in(select  max(T3.auto) as auto from memory tmp_table2 T3 group by T3.id);

وكل الشكر للاستاذ larbiparadox
[-] كل من 1 user says قال شكرا ل samnaj00 على المشاركة المفيدة
  • larbiparadox
الرد
#10
هل هذا الحل تمام ؟ أم أن هناك حلاً افضل؟
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم