09-01-21, 01:54 PM
السلام عليكم ورحمه الله وبركاته
اساتذتى الافاضل
ارجو مساعدتى فى تنفيذ هذا الامر ضرورى لو تكرمتم
اعمل على سيكول سيرفر2012
وعامل فيو داخل السيكول سيرفر لجلب بعض البيانات واجراء بعض العمليات الحسابيه عليه
ولكي يتم حساب هذه العمليات الحسابيه هناك بعض الشروط حسب نوع الجزاء وانواع الجزاءات اكثر من 5انواع
ولكل نوع جزاء له طريقه حساب معينه ولذلك يوجد عدد من الشروط لهذه العمليات الحسابيه الخاص بانواع الجزاءات للموظفين
وهذا هو الكود المستخدم داخل الفيو
المطلوب كيف اضع عددمن الشروط داخل الفيو بمعني ادق
محتاج اقول للكود اذا كان حقل Nam يساوى خصم نفذ عمليه حسابيه
واذا كان انذار ينفذ عمليه حسابيه اخرى
واذا كان جزاء نفذ عمليه مختلفه عن السابقين
واذا كان عير ذلك ينفذ عمليه اخرى
والناتج يضعه فى حقل ويسميه (Total_Discount)
مع العلم ان الكود اذا تم وضع شرط واحد فقط بيعمل بطريقه سليمه لكن عند اضافه اكتر من شرط بيظهر خطأ
لو امكن تعديل الكود كما اريد وان كان يوجد حل اخر ينفذ المطلوب ليس عندي مانع المهم ينفذ المطلوب بنتيجه صحيحه
اتمنى اكون عرفت اوصل المعلومه
ولكم منى جزيل الشكر والتقدير
اساتذتى الافاضل
ارجو مساعدتى فى تنفيذ هذا الامر ضرورى لو تكرمتم
اعمل على سيكول سيرفر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)
مع العلم ان الكود اذا تم وضع شرط واحد فقط بيعمل بطريقه سليمه لكن عند اضافه اكتر من شرط بيظهر خطأ
لو امكن تعديل الكود كما اريد وان كان يوجد حل اخر ينفذ المطلوب ليس عندي مانع المهم ينفذ المطلوب بنتيجه صحيحه
اتمنى اكون عرفت اوصل المعلومه
ولكم منى جزيل الشكر والتقدير