البرمجة

كيفية جمع مجموع الحزم في SQL Server

للحصول على مجموع إجمالي لعمود معين في SQL Server مع الانضمامات، يجب أن تؤخذ بعين الاعتبار بعض النقاط الهامة لضمان الحصول على النتيجة الصحيحة. يبدو أن الاستعلام الذي تقدمه قريب جدًا من تحقيق الهدف، ولكن يبدو أن هناك بعض القضايا التي يجب معالجتها للوصول إلى النتيجة المطلوبة.

أولًا، يبدو أنك تقوم بجمع العمود cdin_NoofPackages باستخدام الدالة SUM()، مع تضمين باقي الأعمدة في جملة SELECT وكذلك في الجملة GROUP BY. هذا يعني أنك تقوم بتجميع البيانات بناءً على القيم المختلفة في الأعمدة الأخرى مع كل قيمة في cdin_NoofPackages. إذا كنت تريد الحصول على إجمالي عمود محدد دون تقسيم الصفوف حسب الأعمدة الأخرى، فيجب أن تقوم بإزالة هذه الأعمدة من الـ GROUP BY وترك فقط i.cdin_cdindexid فيها.

ثانيًا، يجب التأكد من أن البيانات التي تقوم بالتحقق منها في الـ WHERE تتناسب مع متطلباتك. قد تحتاج إلى مراجعة شروط الفلترة للتأكد من أنها تحقق ما تريد. على سبيل المثال، تحقق من أن تواريخ الفاتورة تتناسب مع الفترة التي تبحث فيها.

في النهاية، إليك نسخة معدلة من الاستعلام يمكن أن تساعدك في الوصول إلى النتيجة المرجوة:

sql
SELECT SUM(i.cdin_NoofPackages) AS Total_Packages, i.cdin_cdindexid AS cntdp FROM cdindex i INNER JOIN company c ON i.cdin_CompanyId = c.Comp_CompanyId INNER JOIN Territories t ON i.cdin_Secterr = t.Terr_TerritoryID LEFT OUTER JOIN Performainv p ON i.cdin_cdindexid = p.pinv_cdindexid WHERE i.cdin_deleted IS NULL AND c.comp_deleted IS NULL AND t.Terr_Deleted IS NULL AND (p.pinv_deleted IS NULL OR p.pinv_deleted = 0) AND (p.pinv_InvoiceProperty = '01' OR p.pinv_InvoiceProperty IS NULL) AND (p.pinv_Status IN ('Draft', 'Posted') OR p.pinv_status IS NULL) AND i.cdin_startunstufdate BETWEEN '2016-07-01' AND '2016-07-11' GROUP BY i.cdin_cdindexid;

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

المزيد من المعلومات

بالطبع، سأقدم المزيد من المعلومات لمساعدتك في فهم الاستعلام وكيفية الحصول على النتائج الصحيحة.

  1. استخدام دالة COALESCE:
    تستخدم دالة COALESCE لتحديد القيم الافتراضية للأعمدة في حالة عدم وجود قيم لها. في الاستعلام الخاص بك، تستخدم COALESCE لضمان أن القيم المستردة للأعمدة مثل cdin_NoofPackages، cdin_WT، cdin_volumewt، وcdin_MortgageAmount لا تكون قيمًا فارغة.

  2. الانضمامات (Joins):
    يقوم الاستعلام بعمليات الانضمام بين جداول مختلفة باستخدام العبارة INNER JOIN للجداول التي يجب أن تتطابق الصفوف فيها، و LEFT OUTER JOIN للجداول التي قد لا تكون هناك تطابقات لكل الصفوف فيها. في هذا الاستعلام، تنضم جداول cdindex و company و Territories و Performainv بناءً على الشروط المحددة.

  3. شروط الفلترة (Filtering Conditions):
    يحدد شروط الفلترة في الجملة WHERE الصفوف التي يتم احتسابها في النتيجة النهائية. في الاستعلام الخاص بك، تقوم بتصفية الصفوف بناءً على الشروط المحددة مثل عدم حذف السجلات (Is NULL) وحالة الفاتورة (p.pinv_Status) والتواريخ (i.cdin_startunstufdate).

  4. التجميع (Grouping):
    يستخدم الاستعلام جملة GROUP BY لتجميع الصفوف بناءً على قيمة محددة في العمود cdin_cdindexid. هذا يعني أنه سيتم تجميع الصفوف التي تحتوي على نفس قيمة cdin_cdindexid معًا، وسيتم حساب مجموع الحزم لكل قيمة فريدة.

  5. النتيجة:
    يتوقع أن يقوم الاستعلام بإرجاع مجموع عدد الحزم (cdin_NoofPackages) مجتمعة معًا لكل قيمة مختلفة في العمود cdin_cdindexid.

من المهم فهم كيفية عمل الاستعلام وتأثير كل جزء منه على النتائج النهائية. قد تحتاج أحيانًا إلى ضبط الشروط أو عمليات الانضمام للحصول على النتائج المرغوب فيها، ويمكنك دائمًا استشارة الوثائق الخاصة بـ SQL Server لمزيد من التفاصيل حول الدوال والاستعلامات المتاحة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر