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

مشكله فى جملة استعلام ذكيه

مغلق
بدأه lotfy5000 في 25 ديسمبر 2006 · 4 رد · 593 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

المشكله باختصار هى

عندى جدول كالاتى

رقم الموظف الجمع الاول رقم السنه الجمع النهائى

10048 30 1

10048 30 2

10048 30 3

10048 22 4

20769 21 1

20769 1 2

حيث كل موظف له عدد من السنين و كل سنه لها جمع اول

عاوز اعمل view يطلع كل موظف فى سطر و لكن المشكله يجمع اول سنين واعدا السنه الاخير

يعنى فى الموظف الاول 10048 يجمع لغاية السنه رقم 3 و يحطها فى الجمع النهائى و يشيل ال 3 سنين كالجدول الاتى

رقم الموظف الجمع الاول رقم السنه الجمع النهائى

10048 22 4 90

20769 1 1 21

#2

ممكن توضح اكتر

#3

توضيح اكثر للمشكله

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

عاوز اطلع view يحسب الاجمالى لكل السنين ماعدا السنه الاخيره

و المشكله ان السنه الاخيره مختلفه من موظف لموظف

يعنى موظف موجود 4 سنين و بالتالى له 4 سجلات

و اخر موجود سنتين و بالتالى له سجلين و هكذا يا رب اكون كده وضحت

شكرا

#4

بفرض ان الجدول بالشكل التالي

CREATE TABLE [dbo].[Emps](
	[EmpID] [int] NOT NULL,
	[Year] [tinyint] NOT NULL,
	[Balance] [smallmoney] NOT NULL,
 CONSTRAINT [PK_Emps] PRIMARY KEY CLUSTERED 
(
	[EmpID] ASC,
	[Year] ASC
)

و ادخلنا البيانات التاليه

--EMP1
insert into Emps(EmpID,Year,Balance) Values(1,1,50)
insert into Emps(EmpID,Year,Balance) Values(1,2,50)
insert into Emps(EmpID,Year,Balance) Values(1,3,50)

--EMP2
insert into Emps(EmpID,Year,Balance) Values(2,1,50)
insert into Emps(EmpID,Year,Balance) Values(2,2,50)
insert into Emps(EmpID,Year,Balance) Values(2,3,50)

بحيث ان تكون بيانات الجدول بالشكل التالي

EmpID	   Year Balance
----------- ---- ---------------------
1		   1	50.00
1		   2	50.00
1		   3	50.00
2		   1	50.00
2		   2	50.00
2		   3	50.00

باستخدام الاستعلام التالي

SELECT EmpID, COUNT(year) , SUM(Balance)
FROM Emps E1
WHERE Year < (SELECT MAX(Year) FROM Emps E2 WHERE E2.EmpID = E1.EmpID)
GROUP BY EmpID

يكون الناتج

EmpID				   
----------- ----------- ---------------------
1		   2		   100.00
2		   2		   100.00
#5

اشكرك

يا استاذ / احمد طاهر الباز

هذة الجمله الرائعة فهى ما اريده فعلا

شكرا يا معلم فى sql server

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

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