الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى جملة if

مغلق
بدأه waleedhm في 3 فبراير 2007 · 3 رد · 575 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

عندى المشكلة التالية جدول الموظفين

رقم الموظف الاسم الراتب

1 محمد 160

2 احمد 140

3 محمود 200

4 اشرف 160

5 وليد 200

المشكلة انا محتاج انه فى حالة ان الراتب اكبر من 150 يتم طرح 1 من الراتب ولو اصغر يتم اضافة 1 الى الراتب

الكود عندى كان بالشكل التالى

IF (SELECT count(B_SAL) FROM Employees) < $150
BEGIN
	SELECT  EMP_NUM_PK,EMP_NAME,B_SAL,b_sal +1  salary
   FROM Employees
   END
ELSE
   IF (SELECT count(B_SAL) FROM Employees) > $150  
BEGIN
	SELECT  EMP_NUM_PK,EMP_NAME,B_SAL,b_sal - 1 salary
   FROM Employees
END

احتاج الى النتيجة التالية

رقم الموظف الاسم الراتب الراتب الجديد

1 محمد 160 159

2 احمد 140 141

3 محمود 200 199

4 اشرف 160 159

5 وليد 200 199

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#2

السلام عليكم

select * ,case when B_SAL<150 then B_SAL+1 else B_SAL-1 end  from Employees

لا أعلم ماذا تريد ان تفعل أذا كان الراتب 150

هنا لا اذا كان الراتب 150 فعي ترجع 150

select * ,case when B_SAL<150 then B_SAL+1 else case when  B_SAL=150 then B_SAL else B_SAL-1 end end  from Employees

ان شاء الله تفيدك

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#3

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

أخي محمد .. كيفك و كيف أحوالك . :)

طريقتي نفس طريقة أخي محب الرسول بالضبط ..

لكن معالج فيها حالة أن يكون الراتب 150 فيعود بالـ 150 كما هي ..

إن شاء الله تنفعك :

Select  EMP_NUM_PK, EMP_NAME, B_SAL AS Old_SAL ,

B_SAL = Case  
   When  B_SAL<150  Then  B_SAL+1 
   When  B_SAL>150  Then  B_SAL-1 
   Else	 B_SAL
  End  

From Employees

بالتوفيق للجميع .. :)

تم تعديل هذه المشاركة بواسطة imadouzoun في 6 فبراير 2007 في 18:57

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#4

السلام عليكم ورحمة الله

جزاكم الله خيرا يا شباب على سرعة الرد واسف جدا على التاخير فى الرد بسبب ضغط العمل جزاكم الله خيرا اخى محب الرسول واخى عماد

على العموم انا عملت الحل التالى والحمد لله اشتغل معايا تمام

CREATE FUNCTION dbo.Waleed(@PostSalary decimal(16,3))
RETURNS decimal(16,3)
AS
BEGIN
	DECLARE @D0_GSalary 		decimal(16,3)
	 IF @PostSalary > 160
		SET @D0_GSalary = 14.40
	ELSE 
		SET @D0_GSalary = (( @PostSalary * 150  ) ) / 100  * 6 /100

	RETURN @D0_GSalary 
END

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

هذا الموضوع مغلق.

مواضيع مشابهة