View Full Version : کمک در نوشتن یک کوئری کوچک
پوریا_م
پنج شنبه 23 تیر 1390, 12:35 عصر
جدولی شامل سه فیلد کدپرسنلی : PCode سال : Year و ماه : Month داریم
در این جدول برای پرسنلی با کد مثلا 10 اطلاعات 12 ماه سال 89 و 3 ماه اول سال 90 ثبت شده است
من قصد دارم کدی بنویسم که برای این پرسنل آخرین اطلاعات سال و ماه را بدهد در واقع کدی که خروجی آن برای این
پرسنل تنها یک رکورد شامل سال 90 و ماه 3 باشد .
چگونه این کد را بنویسم؟
Reza_Yarahmadi
پنج شنبه 23 تیر 1390, 17:44 عصر
با استفاده از Group By میتونید این کار رو انجام بدید
Select
PCode,
Max(Year) Year,
Max(Month) Month
From TableName
Group By PCode
پوریا_م
پنج شنبه 23 تیر 1390, 18:39 عصر
با استفاده از Group By میتونید این کار رو انجام بدید
Select
PCode,
Max(Year) Year,
Max(Month) Month
From TableName
Group By PCode
دوست عزیز با این کد که من خودم قبلا تست کردم به من سال 90 و ماه 12 راه میدهد چون بزرگترین ماه را که 12 است انتخاب میکند در حالی که من میخواهم سال 90 و ماه 3 را به من بدهد یعنی آخرین اطلاعاتی که برای این کد پرسنلی در سیستم ثبت شده برای این حالت کدی که جواب بده چیه؟
محمد سلیم آبادی
جمعه 24 تیر 1390, 06:07 صبح
با استفاده از Group By میتونید این کار رو انجام بدید
Select
PCode,
Max(Year) Year,
Max(Month) Month
From TableName
Group By PCode
کد اگه میخواهی جواب بده باید به این شکل تغییر کنه:
WITH C1
AS
(
SELECT PCode, MAX(Year) AS mx
FROM TableName
GROUP BY PCode
),
C2 AS
(
SELECT T.PCode, T.Year, MAX(T.Month) month
FROM TableName T
INNER JOIN C1
ON T.Pcode = C1.Pcode
AND T.Year = C1.Year
GROUP BY Pcode
)
SELECT * FROM C2;
البته در این تاپیک هم دو راه حل ساده مطرح شدند:
http://barnamenevis.org/showthread.php?295689-%DA%A9%D9%85%DA%A9-%D8%AF%D8%B1-%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DA%A9%D9%88%D8%A6%D9%80%D9%80%D9%80%D9%80%D9%80%D 9%80%D9%80%D9%80%D9%80%D9%80%D8%B1%DB%8C
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.