jamal_rrkk بتاريخ: 10 مايو 2016 تقديم بلاغ مشاركة بتاريخ: 10 مايو 2016 السلام عليكم ورحمة الله وبركاته لقد قمت بربط view مع نقسها أربع مرات لإنشاء view تحتوي على آخر خمس سنوات مدخله بشكل عمودي كما يلي رقم الحساب اسم الحساب مستوي الحساب تصنيف الحساب أرصدة آخر سنة 2015 2014 2013 2012 2011 وذلك حسب الكود التالي أول view create or replace view v_bal_tree_y (numc , yer , num , nam , intree , de_cr , vd_vc ) as select numc , yer , num , nam , (case when num < 10 then 'الرئيسي' when num > 10 and num < 1000 then 'الأول' when num > 1000 and num < 100000 then 'الثاني' when num > 100000 and num < 10000000 then 'الثالث' when num > 10000000 then 'الرابع' end) , (case when de_cr = 1 then 'مدين' when de_cr = 2 then 'دائن' end) , (vd-vc) from v_bal_tree order by numc , num ; ثاني view تحوي على الربط create or replace view v_bal_tree_yf (numc, num, nam, intree, de_cr, yer1, yer2 ,yer3 ,yer4 ,yer5 ) as select y1.numc, y1.num, y1.nam, y1.intree , y1.de_cr, nvl(y1.vd_vc,0), nvl(y2.vd_vc,0), nvl(y3.vd_vc,0), nvl(y4.vd_vc,0), nvl(y5.vd_vc,0) from v_bal_tree_y y1 , v_bal_tree_y y2 , v_bal_tree_y y3 , v_bal_tree_y y4 , v_bal_tree_y y5 where y1.yer = ( select max(yer) from v_bal_tree_y ) and y1.numc = y2.numc(+) and y1.num = y2.num(+) and y1.yer-1 = y2.yer(+) and y1.numc = y3.numc(+) and y1.num = y3.num(+) and y1.yer-2 = y3.yer(+) and y1.numc = y4.numc(+) and y1.num = y4.num(+) and y1.yer-3 = y4.yer(+) and y1.numc = y5.numc(+) and y1.num = y5.num(+) and y1.yer-4 = y5.yer(+) order by y1.num ; OR create or replace view v_bal_tree_yff (numc, num, nam, intree, de_cr, yer1, yer2 ,yer3 ,yer4 ,yer5 ) as select y1.numc, y1.num, y1.nam, y1.intree , y1.de_cr, nvl(y1.vd_vc,0), nvl(y2.vd_vc,0) , nvl(y3.vd_vc,0), nvl(y4.vd_vc,0), nvl(y5.vd_vc,0) from v_bal_tree_y y1 LEFT JOIN v_bal_tree_y y2 ON (y1.numc = y2.numc and y1.num = y2.num and y1.yer-1 = y2.yer) LEFT JOIN v_bal_tree_y y3 ON (y1.numc = y3.numc and y1.num = y3.num and y1.yer-2 = y3.yer) LEFT JOIN v_bal_tree_y y4 ON (y1.numc = y4.numc and y1.num = y4.num and y1.yer-3 = y4.yer) LEFT JOIN v_bal_tree_y y5 ON (y1.numc = y5.numc and y1.num = y5.num and y1.yer-4 = y5.yer) where y1.yer = ( select max(yer) from v_bal_tree_y) order by y1.num ; لقد حاولت استخدام FULL JOIN و FULL OUTER JOIN لإظهار جميع الدتا وكان يحصل الخطأ التالي ORA-01790 ORA-01790expression must have same datatype as corresponding expression Cause:A SELECT list item corresponds to a SELECT list item with a different datatype in another query of the same set expression. Action:Make sure all corresponding SELECT list items have the same datatypes. The functions TO_NUMBER, TO_CHAR, and TO_DATE can be used to do explicit data conversions. هل يمكن كتابة الكود السابق بطريقة ثانيه مع إحضار جميع البيانات أو إحضار نفس البيانات جزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 10 مايو 2016 تقديم بلاغ مشاركة بتاريخ: 10 مايو 2016 استخدم union اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 10 مايو 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 10 مايو 2016 السلام عليكم ورحمة الله وبركاته أخي الكريم اذا كان قصدك أن اكتب الكود التالي create or replace view v_bal_tree_yu (numc, yer,num, nam, intree, de_cr, yer1, yer2 ,yer3 ,yer4 ,yer5 ) as select numc , yer , num , nam , intree , de_cr , vd_vc , 0 , 0 , 0 , 0 from v_bal_tree_y where yer = ( select max(yer) from v_bal_tree_y) union all select numc , yer , num , nam , intree , de_cr , 0, vd_vc , 0 , 0 , 0 from v_bal_tree_y where yer = ( select max(yer-1) from v_bal_tree_y) union all select numc , yer , num , nam , intree , de_cr , 0, 0 , vd_vc , 0 , 0 from v_bal_tree_y where yer = ( select max(yer-2) from v_bal_tree_y) union all select numc , yer , num , nam , intree , de_cr , 0, 0 , 0 ,vd_vc , 0 from v_bal_tree_y where yer = ( select max(yer-3) from v_bal_tree_y) union all select numc , yer , num , nam , intree , de_cr , 0, 0 , 0 , 0 , vd_vc from v_bal_tree_y where yer = ( select max(yer-4) from v_bal_tree_y) ; ومن ثم أربط view مع نفسها يكون استرجاع الدتا بطئ جدا مرفق صوره للشاشة المصممة جزاك الله خيرا ارصدة الحسابات.doc اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 10 مايو 2016 تقديم بلاغ مشاركة بتاريخ: 10 مايو 2016 (معدل) يا ريت ال structure بتاع الجداول و insert statements لو سمحتاظنك تقصد انك عايز النتايج بشكل افقى لان عندك عمود شايل السنين متهيالى ؟ملحوظة : اسماء الجداول لا يفهم منها شئ تم تعديل 10 مايو 2016 بواسطة eslam elbyaly اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 11 مايو 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 11 مايو 2016 السلام عليكم ورحمة الله وبركاته أخي الكريم eslam elbyaly جزاك الله خيرا فعلا لم أوضح أسماء الحقول في الـ view وذلك كان خطأ مني أول view numc : رقم الشركة yer: السنة المالية ( تحتوي على جميع السنوات المالية المدخلة ) num : رقم الحساب nam : اسم الحساب intree : المستوي حسب شجرة الحسابات de_cr : تصنيف الحساب مدين أو دائن vd_vc : رصيد الحساب ثاني view numc : رقم الشركة num : رقم الحساب nam : اسم الحساب intree : المستوي حسب شجرة الحسابات de_cr : تصنيف الحساب مدين أو دائن yer1 : أرصدة الحسابات لآخر سنه مالية مدخله مثلا 2015 yer2 : أرصدة الحسابات للسنة المالية 2014 yer3 : أرصدة الحسابات للسنة المالية 2013 yer4 : أرصدة الحسابات للسنة المالية 2012 yer5 : أرصدة الحسابات للسنة المالية 2011 وذلك حسب الصورة المرفقة سابقا البرنامج هو برنامج لتدقيق حسابات الشركات ولم انتهي من تصميمه حيث يتم سحب الدتا من خلال ملف اكسل لشاشة ميزان المراجعة ومن ثم يتم حفظها في جدول ميزان المراجعة مرفق ملفات تحتوي على الجداول المرتبطة بالكود أعلاه كما تم إرفاق شاشة معدله لميزان المراجعة بحيث يتم سحب البيانات من ملف الأكسل مصممه بـ 10g جزاكم الله خيرا auditproa.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 11 مايو 2016 تقديم بلاغ مشاركة بتاريخ: 11 مايو 2016 مبدايا ، غلط جدا انك تسمى اسماء مبهمة لاى اوبجكت .لو كل سنة عندك ليها عمود ، جرب ال scalar subquerySelect ...from table where year =2013 , ( select .....where year =2014) اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 13 مايو 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 13 مايو 2016 السلام عليكم ورحمة الله وبركاته أخي الكريم eslam elbyaly اكتب لنا الكود حسب الحقول أعلاه بحيث يتم إظهار آخر خمس سنوات مدخله جزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 27 مايو 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 27 مايو 2016 السلام عليكم ورحمة الله وبركاته تم تعديل الكود السابق كما يلى create or replace view v_bal_tree_yf (numc, num, nam, intree, de_cr, yer1, yer2 ,yer3 ,yer4 ,yer5 ) as select y1.numc, y1.num, y1.nam, y1.intree , y1.de_cr , nvl(y1.vd_vc,0), nvl(y2.vd_vc,0), nvl(y3.vd_vc,0), nvl(y4.vd_vc,0), nvl(y5.vd_vc,0) from v_bal_tree_y y1 , v_bal_tree_y y2 , v_bal_tree_y y3 , v_bal_tree_y y4 , v_bal_tree_y y5 , (select max(yer) yer , numc from v_bal_tree_y group by numc) yy where yy.yer = y1.yer and yy.numc = y1.numc and y1.numc = y2.numc(+) and y1.num = y2.num(+) and y1.yer-1 = y2.yer(+) and y1.numc = y3.numc(+) and y1.num = y3.num(+) and y1.yer-2 = y3.yer(+) and y1.numc = y4.numc(+) and y1.num = y4.num(+) and y1.yer-3 = y4.yer(+) and y1.numc = y5.numc(+) and y1.num = y5.num(+) and y1.yer-4 = y5.yer(+) order by y1.num ; جزاكم الله خيرا 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.