بسم الله الرحمن الرحيم
أخواني هل يوجد مثال علي الجملة التالية
select field1,isnull(sum(field2)) from tbl
ولي إستفسار أخر
هل يمكن فرز عمودين كل منهما بين تاريخين مختلفين في جملة Select
بسم الله الرحمن الرحيم
أخواني هل يوجد مثال علي الجملة التالية
select field1,isnull(sum(field2)) from tbl
ولي إستفسار أخر
هل يمكن فرز عمودين كل منهما بين تاريخين مختلفين في جملة Select
السلام عليكم
المثال السابق لا يعمل تحتاج الى group by
اي التقسيم الى مجموعات بحسب field1
بالتاكيد اخي الكريم استخدم ال group by
In bad state
بسم الله الرحمن الرحيم
شكرا أخي الفاضل علي ردك
بالفعل أنا ستخدم الكود التالي
select field1,isnull(sum(field2)) from tbl group by field1
والكود يعمل إذا لم أستخدم ISNULL وغرضي من إستخدامها هو
عندما أستخدم SUM فأنه في حالة وجود حقول فارغه لا يرجع قيمه وتظهر الصفوف التي تحتوي علي قيم فقط
وعندما بحثت عن ذلك وجدت في إحدي المنتديات الأجنبية الصيغة التالية
select field1,isnull(sum(field2),0) from tbl group by field1
ولكن للأسف يظهر خطأ عند التشغيل وأنا أستخدم هذا الكودة في عملية جرد للمخزن وقمت بحل هذه المشكلة حل مؤقت بإستخدام الحلقات ومقارنة القيم
أما بالنسبة للأستفسار الثاني
هل يمكن فرز عمودين كل منهما بين تاريخين مختلفين في جملة Select
حيث أريد أستخدامه في في جرد المخزن ويكون الناتج
الرصيد الإفتتاحي(بين تاريخين- البداية حتي نهاية الشهر الماضي)
الرصيد الختامي (بين تاريخين- البداية حتي نهاية الشهر الحالي)
قمت بحل هذه المشكلة بإنشاء جدولين datatable وقمت بمقارنة البيانات ولكني أريد إستخدام جملة واحده فهل يمكن ذلك
وشكرا جدأ علي سرعة ردك
بسم الله الرحمن الرحيم
اخى العزيز
بالنسبة للسوال الاول الحل ده صح مفيش فيه مشكلة
تاكد بس انت من الجدول لو فيه نصوص مثلا او اعمل له convert
بالنسبة للسوال التانى انت ممكن تستخدم
union
هيجيب لك الحقول اللى بتاريخ معين
مع حقول مع تاريخ تانى
جرب و انا معك
بسم الله الرحمن الرحيم
اخى العزيز
بعد التحية
المفروض عليك من الاول كنت قلت انك بتستخدم access
بسم الله الرحمن الرحيم
في البداية أود أن أشكرك علي إهتمامك والرد
بالتسبة للزر (ISNULL) أود في حالة عدم وجود نتيجة للجمع يتم وضع صفر
بمعني أخر في المثال أقوم بفرز البيانات بين تاريخين 01/07/2010 حتي 31/07/2010 فيكون الناتج للعنصرين A,B فقط. حيث أن العنصر C بداية دخولة كانت 02/08/2010 فلا يظهر في عملية الفرز
ولكني أريد في هذه الحالة تظهر قيمته صفر . وعندما بحثت إنه يمكنني أن أستخدم الدالة التالية
isnull(sum(Amount),0)
أي في حالة عدم وجود قيمة للجمع يتم وضع القيمة صفر. ولكن للأسف عند إستخدامي لهذه الدالة يظهر خطأ
بالنسبة للزر Union أود عند الفرز يظهر أريع أعمده
الأول رقم العنصر
الثاني وصف العنصر
الثالث نتيجة الفرز من 01/07/2010 إلي 31/07/2010
الرابع نتيجة الفرز من 01/08/2010 إلي 31/08/2010
ولكن عندما أقوم بتنفيذ الكود يتم دمج الجدولين الثالث والرابع
شكرا علي إهتمامك وأنتظر الرد
بسم الله الرحمن الرحيم
اخى العزيز
لسه فاهم قصدك سورى اسف
على فكرة
ISNULL مش موجودة فى اكسيس و الله فيه مكانها حاجة تانية اسمها تقريبا NZ
انا عملت لك الطلب الاول تقدر انت تعمل الطلب التانى بنفس الفكرة
تم تعديل هذه المشاركة بواسطة bodaman22 في 4 أغسطس 2010 في 10:57
بسم الله الرحمن الرحيم
شكرا يا أخي علي متابعتك لهذا الموضوع
بالنسبة للأستفسار الأول
فقد كنت أستخدمت نفس فكرتك ولكن مع إختلاف بسيط فقد أستخدمت For ... Next ومقارنة البيانات بـ IF لأنه عند عدم إستخدام جملة IF يتم وضع البيانات بالترتيب ويكون التائج خطأ
بمعني أخر في المثال الحالي لا يوجد أي إدخالات للعنصر C خلال شهر 7 فيكون الناتج للعنصر C صفر وهذه النتيجه صحيحه
قم بوضع قيم للعنصر C خلال شهر 7 وحذف قيم العنصر A خلال شهر 7
ستجد أن الناتج أن عنصر C يساوي صفر !! لماذا لأن عملية عرض البيانات تتم بالترتيب لعدم وجود شرط
ولكني كنت أطمع في أن أجد جملة مباشرة تعطيني الناتج دون إستخدام حلقات لأن قاعدة البيانات التي أتعامل معها بها أكثر من 3000 عنصر وهذا يعطي نسبة إحتمال للخطأ
ولكن بالنسبة اللأستفسار الثاني فإنه عند إستخدام الكود التالي
select ItemId,ItemDescription, sum(Amount) from tblstore where Sdate between #07/01/2010# and #07/31/2010# group by ItemId,ItemDescription union select ItemId,ItemDescription, sum(Amount) from tblstore where Sdate between #08/01/2010# and #08/31/2010# group by ItemId,ItemDescription
يكون الناتج ثلاثة أعمده فقط حيث يتم دمج جملتي الجمع
ولكني أريد أن أحصل علي عمود منفصل لكل عملية جمع
وأنتظر ردك