چگونه Group By مورد نظر را بگیرم؟؟؟
برنامه اي را در نظر بگيريد که داراي پروژه هاي مختلفي است که روند تکامل هر پروژه از شروع تا پايان بايد ذخيره شود
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کد:
http://www.pictureshoster.com/files/ioi5xi30s74ptexeyv.jpg
همان طور که می بینید براي اين پروژه دو جدول طراحي کرده ام يکي به نام پروژه (که دارای یک فیلد کلید به نام آی دی می باشد) يکي به نام پيگيري. (فیلد وضعیت رشته است)
کوئری که میخواهم بگیرم به صورت زیر است
"وضعیت آخرین تاریخ پیگیری هر کد"
SELECT ProjeID, MAX(T_Peigiri) AS AkharinTarikh
FROM dbo.Pursue
GROUP BY ProjeID
تا اینجا مشکلی وجود نداره و رکوردها را گروپ بندی شده نمایش می دهد
اما هدف کوئری نمایش وضعیت رکوردهاست که با اضافه کردن آن اجرا نمی شود. علی الظاهر در گروپ بای نمی توان خود فیلد را نمایش داد و حتما باید از توابعی مثل MAX ,Min ,Count,... استفاده شود
SELECT ProjeID, MAX(T_Peigiri) AS Expr1, Vazeivat
FROM dbo.Pursue
GROUP BY ProjeID
البته اگر در گروپ بای فیلد وضعیت رو بنویسم مشکل حل میشه اما در اصل گروپ بای رو غیر فعال کردم و همه رکورد ها رو نمایش میده.