تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف اضع عددمن الشروط داخل الفيو
#1
السلام عليكم ورحمه الله وبركاته

اساتذتى الافاضل

ارجو مساعدتى فى تنفيذ هذا الامر ضرورى لو تكرمتم
اعمل على سيكول سيرفر2012


وعامل فيو داخل السيكول سيرفر لجلب بعض البيانات واجراء بعض العمليات الحسابيه عليه

ولكي يتم حساب هذه العمليات الحسابيه هناك بعض الشروط  حسب نوع الجزاء وانواع الجزاءات اكثر من  5انواع 

ولكل نوع جزاء له طريقه حساب معينه ولذلك يوجد عدد من الشروط لهذه العمليات الحسابيه الخاص بانواع الجزاءات للموظفين 
وهذا هو الكود المستخدم داخل الفيو
كود :
SELECT        dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID AS Nam_ID, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start,
                       DATEADD(Month, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start) AS Fin, dbo.View_Total_Statement.Total AS Totl,

               iif((dbo.TB_Penalt.Nam = 'خصم'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total / dbo.TB_Penalty.Number_Day_Month * dbo.TB_Penalty.Number_Days)),
               iif((dbo.TB_Penalt.Nam = 'انذار'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total * 85/ 100)),
               iif((dbo.TB_Penalt.Nam = 'جزاء'), CONVERT(decimal(18, 2), dbo.View_C_Bdalat.Total),CONVERT(decimal(18, 2), dbo.View_Total_Statement.Total)) AS Total_Discount,

                  dbo.TB_Penalty.Number_Day_Month,
                       dbo.TB_Penalt.Nam
FROM            dbo.View_C_Bdalat RIGHT OUTER JOIN
                       dbo.TB_Penalt INNER JOIN
                       dbo.TB_Penalty ON dbo.TB_Penalt.ID = dbo.TB_Penalty.Nam ON dbo.View_C_Bdalat.Bblat_Nam = dbo.TB_Penalt.Nam AND
                       dbo.View_C_Bdalat.Emp_ID = dbo.TB_Penalty.Emp_ID LEFT OUTER JOIN
                       dbo.TB_Salarie INNER JOIN
                       dbo.TB_Employ INNER JOIN
                       dbo.View_Total_Statement ON dbo.TB_Employ.Emp_ID = dbo.View_Total_Statement.Emp_ID ON dbo.TB_Salarie.Emp_ID = dbo.TB_Employ.Emp_ID ON
                       dbo.TB_Penalty.Emp_ID = dbo.TB_Employ.Emp_ID
GROUP BY dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID, dbo.TB_Penalty.Start, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month,
                       dbo.TB_Penalty.Number_Day_Month, dbo.TB_Penalt.Nam, dbo.View_C_Bdalat.Total, dbo.View_Total_Statement.Total
المطلوب كيف اضع عددمن الشروط داخل الفيو بمعني ادق

محتاج اقول للكود اذا كان حقل Nam يساوى خصم نفذ عمليه حسابيه
 واذا كان انذار ينفذ عمليه حسابيه اخرى 
واذا كان جزاء نفذ عمليه مختلفه عن السابقين
 واذا كان عير ذلك ينفذ عمليه اخرى

والناتج يضعه فى حقل ويسميه (Total_Discount)  

مع العلم  ان الكود اذا تم وضع شرط واحد فقط بيعمل بطريقه سليمه لكن عند اضافه اكتر من شرط بيظهر خطأ

لو امكن تعديل الكود كما اريد وان كان يوجد حل اخر ينفذ المطلوب  ليس عندي مانع المهم ينفذ المطلوب بنتيجه صحيحه



اتمنى اكون عرفت اوصل المعلومه
ولكم منى جزيل الشكر والتقدير
الرد
تم الشكر بواسطة:
#2
(09-01-21, 01:54 PM)amonem كتب : السلام عليكم ورحمه الله وبركاته

اساتذتى الافاضل

ارجو مساعدتى فى تنفيذ هذا الامر ضرورى لو تكرمتم
اعمل على سيكول سيرفر2012


وعامل فيو داخل السيكول سيرفر لجلب بعض البيانات واجراء بعض العمليات الحسابيه عليه

ولكي يتم حساب هذه العمليات الحسابيه هناك بعض الشروط  حسب نوع الجزاء وانواع الجزاءات اكثر من  5انواع 

ولكل نوع جزاء له طريقه حساب معينه ولذلك يوجد عدد من الشروط لهذه العمليات الحسابيه الخاص بانواع الجزاءات للموظفين 
وهذا هو الكود المستخدم داخل الفيو
كود :
SELECT        dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID AS Nam_ID, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start,
                       DATEADD(Month, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start) AS Fin, dbo.View_Total_Statement.Total AS Totl,

               iif((dbo.TB_Penalt.Nam = 'خصم'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total / dbo.TB_Penalty.Number_Day_Month * dbo.TB_Penalty.Number_Days)),
               iif((dbo.TB_Penalt.Nam = 'انذار'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total * 85/ 100)),
               iif((dbo.TB_Penalt.Nam = 'جزاء'), CONVERT(decimal(18, 2), dbo.View_C_Bdalat.Total),CONVERT(decimal(18, 2), dbo.View_Total_Statement.Total)) AS Total_Discount,

                  dbo.TB_Penalty.Number_Day_Month,
                       dbo.TB_Penalt.Nam
FROM            dbo.View_C_Bdalat RIGHT OUTER JOIN
                       dbo.TB_Penalt INNER JOIN
                       dbo.TB_Penalty ON dbo.TB_Penalt.ID = dbo.TB_Penalty.Nam ON dbo.View_C_Bdalat.Bblat_Nam = dbo.TB_Penalt.Nam AND
                       dbo.View_C_Bdalat.Emp_ID = dbo.TB_Penalty.Emp_ID LEFT OUTER JOIN
                       dbo.TB_Salarie INNER JOIN
                       dbo.TB_Employ INNER JOIN
                       dbo.View_Total_Statement ON dbo.TB_Employ.Emp_ID = dbo.View_Total_Statement.Emp_ID ON dbo.TB_Salarie.Emp_ID = dbo.TB_Employ.Emp_ID ON
                       dbo.TB_Penalty.Emp_ID = dbo.TB_Employ.Emp_ID
GROUP BY dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID, dbo.TB_Penalty.Start, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month,
                       dbo.TB_Penalty.Number_Day_Month, dbo.TB_Penalt.Nam, dbo.View_C_Bdalat.Total, dbo.View_Total_Statement.Total
المطلوب كيف اضع عددمن الشروط داخل الفيو بمعني ادق

محتاج اقول للكود اذا كان حقل Nam يساوى خصم نفذ عمليه حسابيه
 واذا كان انذار ينفذ عمليه حسابيه اخرى 
واذا كان جزاء نفذ عمليه مختلفه عن السابقين
 واذا كان عير ذلك ينفذ عمليه اخرى

والناتج يضعه فى حقل ويسميه (Total_Discount)  

مع العلم  ان الكود اذا تم وضع شرط واحد فقط بيعمل بطريقه سليمه لكن عند اضافه اكتر من شرط بيظهر خطأ

لو امكن تعديل الكود كما اريد وان كان يوجد حل اخر ينفذ المطلوب  ليس عندي مانع المهم ينفذ المطلوب بنتيجه صحيحه



اتمنى اكون عرفت اوصل المعلومه
ولكم منى جزيل الشكر والتقدير

هو مافيش حد بيدخل المنتدي غيرى ولا ايه؟؟
الرد
تم الشكر بواسطة:



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


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