PDA

View Full Version : یه سوال خیلی ساده



Erfan_eng
یک شنبه 11 دی 1384, 13:26 عصر
جدولی داریم با کلیدهای سال و ماه و کد پرسنلی اطلاعات پرسنلی از ماه 1 در این جدول وجود دارد. برخی افراد در ماههای بعدی حذف شده اند و برخی دیگر اضافه شده اند. select ای لازم دارم که هر کد پرسنلی را فقط یک بار select کند چه پرسنل در ماه 1 باشد چه ماه 7 (یک پرسنل ممکن است در تمامی ماهها record داشته باشد)

جدول رو اینطوری در نظر بگیرید.
FinanceYear
MonthNo
EmployeeNo
FirstName
LastName
.
.
.
3 فیلد اول کلیدن اطلاعات رو اینطوری در نظر بگیرید
FinanceYear MonthNo Employeeno Fisrtname
5555 7000 1 1384
5555 7000 2 1384
5555 7000 3 1384
5556 7001 2 1384
5556 7001 3 1384
5557 7002 3 1384
5558 7003 3 1384

حالا من میخوام Select ای داشته باشم که این جواب رو به من بده

FinanceYear MonthNo Employeeno Fisrtname
5555 7000 1 1384
5556 7001 2 1384
5557 7002 3 1384
5558 7003 3 1384
:متفکر:

Erfan_eng
سه شنبه 20 دی 1384, 07:08 صبح
چرا هیشکی جواب یه سوال خیلی ساده رو نمیده؟

صابر
سه شنبه 20 دی 1384, 12:02 عصر
نمی‌دونم این به دردتون می‌خوره یا نه، اینجوری می‌تونید مقادیر غیر تکراری Employeeno را پیدا کنید:
SELECT Distinct Employeeno From Table1
حالا اگه از یک زبان دیگه به عنوان host language استفاده می‌کنید، با داشتن این جدول می‌تونید بقیه فیلدهای مربوطه رو هم پیدا کنید.
اما نمی‌دونم چه طور باید یک Query نوشت که دقیقاً جدول مورد نظر شما رو برگردونه..

mahdihg
سه شنبه 20 دی 1384, 12:57 عصر
بابا چون کلید ترکیبی گرفی امکان نداره چون کلید شما روی سال - ماه - کد پرسنلی - هست
با Select Distinct هم مشکل شوما حل نمیشه
سعی کن جدولت رو نرمال کنی
نرمال نوع 2 و 3

mzjahromi
سه شنبه 20 دی 1384, 13:19 عصر
select FinanceYear,Min(MonthNo),Employeeno,Fisrtname
From Employee
Group by FinanceYear,Employeeno,Fisrtname

Omid Rekabsaz
چهارشنبه 21 دی 1384, 19:18 عصر
با سلام
با توجه به اینکه احتمالا اطلاعات بیشتری را از جدول مربوطه می خواهید Query بالا جوابگو نخواهد بود...
امیدوارم این جواب سوال شما باشد...


Select T.*
From Table T Inner Join
(Select FinanceYear, Employeeno, Min(Monthno) As Monthno
From Table
Group By Select FinanceYear, Employeeno) As T1
On (T.FinanceYear = T1.FinanceYear
AND T.Employeeno= T1.Employeeno
AND T.MonthNo = T1.MonthNo)