PDA

View Full Version : MAX-1



archi
جمعه 13 آذر 1383, 12:37 عصر
هرکسی (اعضای صندوق)توی جدول من یک سری پرداخت در تاریخ های مختلفی داره


PayID MemberID Date Amount


با راهنمایی های استاد ثباتی تونستم آخرین پرداختهای هر کس رو توی یک کوئری پیدا کنم
حالا می خوام پرداختهای یکی مونده به آخر همه اعضا را پیدا کنم یعنی یک کوئری با ساختار زیر:


MemberID Date Amount

که date بزرگترین تاریخ نیست بلکه آخرین تاریخ قبل از MAX تاریخ است :(

AminSobati
جمعه 13 آذر 1383, 19:11 عصر
دوست عزیزم،
با وضعین فعلی جدول شما، باید از Sub Query های تو در تو استفاده کنین. ولی اگر یک فیلد اضافه کنین که برای هر Member، پرداختهای اون رو از 1 به بالا شماره گذاری کنه، هم در این Query و هم در Queryهای آینده کمکتون خواهد کرد. به هر حال:


SELECT * FROM MyTable join
(SELECT MyTable.MemberID, MAX(MyTable.[Date]) mymax2 FROM MyTable join
(SELECT MemberID,MAX([Date]) mymax FROM MyTable GROUP BY MemberID) as tmp ON
MyTable.MemberID=tmp.MemberID WHERE MyTable.[Date]<tmp.[mymax]
GROUP BY MyTable.MemberID) as tmp2
ON MyTable.MemberID=tmp2.MemberID AND MyTable.[date]=tmp2.mymax2