الانتقال إلى المحتوى

كيفية عمل هذه الجملة للاهمية


shosho842000

Recommended Posts

السلام عليكم ورحمته الله وبركاته

ازاى اقدر اعمل الجملة دى فى طريقة حساب مرتبات

المطلوب الاتى
انه فى الاول خالص يعمل if condition على الشهر اذا كان بيساوى شهر 1 يبقى
عايزاه جملة select تجيب مجموع الاستحقاقات وهى مثلا sal1,sal2,sal3,sal4,sal4 بناء على شهر 1
لو مش بيساوية يعمل insert into فى جدول salary باستخدام select للبنود دى من الشهر الى فات
يعنى لو مش بيساوى عايزاه يجيب مرتبات الشهر الى قبله ويعمل ليها insertinto فى الجدول

ياريت الموضوع يكون مفهوم

رابط هذا التعليق
شارك


السلام عليكم


انا فهمت من كلامك انك عاوز تجيب مجموع اكثر من حقل فى حالة اذا كان شهر 1 اما اذا كان لا يساوى واحد يجيب البيانات بتاعت الشهر السابق ويدرجها جوة جدول تانى


BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN

SELECT SUM(NVL(SAL1,0))+SUM(NVL(SAL2,0))+SUM(NVL(SAL3,0))+SUM(NVL(SAL4,0)) INTO :GLOBAL.SUM_SAL FROM TABLE_NAME
WHERE TO_CHAR(COLUMN_DATE,'MM')='01';
ELSE
INSERT INTO TABLE_NAME(COLUMN_NAME1,COLUMN_NAME2)
(SELECT COLUMN_NAME1,COLUMN_NAME2 FROM TABLE_NAME WHERE TO_CHAR(COLUMN_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM'));
END IF ;
END;

تطبيق المثال على جدول الموظفين

BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN
SELECT SUM(NVL(SALARY,0))+SUM(NVL(COMMISSION_PCT,0)) INTO :DIS FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')='01';
ELSE 
	 INSERT INTO EMP1
(SELECT HIRE_DATE FROM EMPLOYEES WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM'))
;

END IF;
END;


محمد ابوالعلا ORACLE DEVELOPER

رابط هذا التعليق
شارك

شكرا الاخ العزيز محمد ابو العلا

بس فى تعديل بسيط على المثال انا عايزاه وهو بيعمل insert للبيانات الى جايه من الشهر الى فات يخلى التاريخ ب1 مش ب 12 دا التعديل البسيط الى عايزاه

ولا حضرتك شايف ايه لان المفرض دى هتكون مرتبات شهر جديد ؟؟؟


وشكرا

رابط هذا التعليق
شارك

هنكتب نفس الكود مع تغيير هذه الجملة
ELSE 
SELECT LAST_DAY(HIRE_DATE) INTO :GLOBAL.NEW FROM EMPLOYEES 
WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM');

:GLOBAL.NEW:=:GLOBAL.NEW+1;

INSERT INTO EMP1 VALUES (:GLOBAL.NEW);
END IF;
END;
MOHAMED ABOUELELA
[email="[email protected]"][email protected][/email]

تم تعديل بواسطة محمد ابوالعلا
رابط هذا التعليق
شارك

شكرا على الكود بس فى مشكله انى مش فاهما الكود الاخير الى بعد التعديل

فى سؤال اخر لو تكرمت ممكن تقولى اعمله ازاى على sql server وشكرا

رابط هذا التعليق
شارك

حضرتك تقصد انى اعمل جدول خاص بالشهور على كدا يكون منفضل انا كونت اقصد انى يكون فى نفس الجدول بس دا الى فهمته على اساس انك عامل جدول emp1 ومدخل جواه الشهر

رابط هذا التعليق
شارك

تطبيق المثال على جدول الموظفين

BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN
SELECT SUM(NVL(SALARY,0))+SUM(NVL(COMMISSION_PCT,0)) INTO :GLOBAL.DIS FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')='01';
ELSE 
SELECT LAST_DAY(HIRE_DATE) INTO :GLOBAL.NEW FROM EMPLOYEES 
WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE,'MM')-1;

:GLOBAL.NEW:=:GLOBAL.NEW+1;

INSERT INTO EMPLOYEES VALUES (:GLOBAL.NEW);
END IF;
END;
شرح الكود
هات تاريخ السيرفر وضعة فى متغير عام
واختبر المتغير العام هل يساوى شهر 1
لو بيساوى شهر 1 هات اجمالى مجموع المرتبات ومجموع الحوافز وضعها فى متغير عام لما بيكون الشهر هو شهر 1
غير كدة يعنى لو مش بيساوى شهر 1 
هات اخر يوم فى الشهر وضعة فى متغير عام لما بيكون الشهر بيساوى الشهر الماضى
وزو د علية يوم واحد على المتغير العام المشحون باخر يوم فى الشهر علشان يجبلى الشهر الجديد
وادرج الشهر الجديد فى الجدول
ممكن اضع حقول اخرى غير التاريخ
اما بالنسبة SQL SERVER فليس لدى خبرة
MOHAMED ABOUELELA
[email="[email protected]"][/email]

تم تعديل بواسطة محمد ابوالعلا
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية