البرمجة

تتبع الحسابات: رصد وتحليل عمليات الائتمان والمدين للموظفين

في هذا السيناريو، نحتاج إلى إعداد استعلام SQL للحصول على النتائج المطلوبة. سنقوم بتحقيق ذلك باستخدام الجداول المعطاة tbl_employee، tbl_transaction1، وtbl_transaction2. سنقوم بدمج هذه الجداول واستخدام التجميع والترتيب للحصول على النتائج المطلوبة. إليك الاستعلام:

sql
WITH CombinedTransactions AS ( SELECT t1.empid, t1.amount AS debitamount, 0 AS creditamount, t1.date, t1.creditdebit FROM tbl_transection1 t1 UNION ALL SELECT t2.empid, 0 AS debitamount, t2.amount AS creditamount, t2.date, t2.creditdebit FROM tbl_transection2 t2 ) SELECT e.empid, e.empname, CASE WHEN ct.creditdebit = 0 THEN 'opening Bal' WHEN ct.creditdebit = 1 THEN 'transection 1' WHEN ct.creditdebit = 2 THEN 'transection 2' END AS details, SUM(ct.debitamount) AS debitamount, SUM(ct.creditamount) AS creditamount, e.openingbal + SUM(ct.creditamount) - SUM(ct.debitamount) AS balance, CASE WHEN ct.creditdebit = 1 THEN 'Cr' WHEN ct.creditdebit = 2 THEN 'Dr' END AS Dr_Cr, ct.date FROM tbl_employee e LEFT JOIN CombinedTransactions ct ON e.empid = ct.empid GROUP BY e.empid, e.empname, ct.date, ct.creditdebit, e.openingbal ORDER BY e.empid, ct.date;

هذا الاستعلام يقوم بدمج العمليات من tbl_transection1 و tbl_transection2 في جدول مؤقت (CombinedTransactions)، ثم يقوم بعمل تجميع وترتيب النتائج النهائية باستخدام tbl_employee. يظهر الاستعلام التفاصيل المطلوبة بما في ذلك رصيد الحساب الحالي وطبيعة العمليات (مدين أو دائن).

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

في هذا الاستعلام، نقوم بإنشاء جدول مؤقت يسمى CombinedTransactions يحتوي على بيانات من tbl_transection1 و tbl_transection2. يتم ذلك باستخدام عبارة UNION ALL التي تجمع بين الصفوف من الجدولين وتحتفظ بجميع الصفوف حتى وإن كانت مكررة.

ثم يتم دمج هذا الجدول المؤقت مع tbl_employee باستخدام LEFT JOIN على أساس الحقل empid. هذا يعني أنه حتى إذا لم تكن هناك بيانات مطابقة في CombinedTransactions لـ tbl_employee، سيظهر السجل في النتيجة.

يتم استخدام التجميع (SUM) لحساب إجمالي مبلغ الدائن والمدين لكل موظف وتاريخ. ثم يتم استخدام هذه الإجماليات مع openingbal لحساب الرصيد النهائي باستخدام التفاضل بين مبلغ الدائن والمدين.

أخيرًا، يتم تحديد الطبيعة (مدين أو دائن) باستخدام عبارة CASE، حيث إذا كانت قيمة creditdebit تساوي 1 (دائن)، يُعين ‘Cr’، وإذا كانت تساوي 2 (مدين)، يُعين ‘Dr’.

النتيجة النهائية تكون مجموعة من السجلات المرتبة وفقًا لـ empid وتاريخ العمليات.

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