PDA

View Full Version : جمع تعداد روز یک ماه



رامین مرادی
چهارشنبه 31 خرداد 1396, 12:48 عصر
سلام دوستان من جدولی به شکل زیر دارم
میخوام تعداد روزهای بین دو تاریخ رو برای هر PID بدست بیارم


145577
از تاریخ 2001/06/01 تا تاریخ 2001/06/30 برا کد 10021 جمع روزش میشه 9 روز . ولی دو روزش از ماه بعد هست که نباید حساب بشه. ممنون میشم تو نوشتن کوئریش کمکم کنید.

Mahmoud.Afrad
چهارشنبه 31 خرداد 1396, 21:44 عصر
چیز خاصی نیست
از فانکشن SUM برای جمع مقادیر یک ستون استفاده کنید.
برای شرط تاریخ هم کافیه با مقایسه ساده محدوده رو بدست بیارید
https://stackoverflow.com/a/5125106
شرط PID هم که یک مقایسه(برابری =) ساده هست.

رامین مرادی
پنج شنبه 01 تیر 1396, 09:39 صبح
کمی گنگ شدم و لینکی که دادین رو هم متوجه نشدم. اگه امکان هست کاملتر یا بیشتر توضیح بدین. اگه این کار برای همه PId ها انجام بشه یعنی sum هر کدوم حساب بشه اونوقت چی!:افسرده:

Mahmoud.Afrad
پنج شنبه 01 تیر 1396, 19:31 عصر
select PID , SUM(DayCount)
from [TableName]
where PID=10021
and date1 between '2001/06/01' and '2001/06/30'

برای بدست آوردن مجموع برای همه PIDها باید گروهبندی(group by) کنید که کافیه یک مثال و آموزش ازش ببینید.

رامین مرادی
شنبه 03 تیر 1396, 08:59 صبح
select PID , SUM(DayCount)
from [TableName]
where PID=10021
and date1 between '2001/06/01' and '2001/06/30'

برای بدست آوردن مجموع برای همه PIDها باید گروهبندی(group by) کنید که کافیه یک مثال و آموزش ازش ببینید.

خب تا اینجاش درست رفتم و مشکلی هم ندارم. مشکل من اینه که تاریخ دومم اگه بیا فته ماه بعد روزهای اونم حساب میکنه . من مد نظرم این هست که فقط اون روزهایی رو بدست بیارم که تاریخشون تو اون ماه هست. بقیه تعداد روزهایی که افتاده تو ماه بعد رو حساب نکنه:ناراحت:

Mahmoud.Afrad
شنبه 03 تیر 1396, 09:08 صبح
من نمیدونم به تفکیک ماه میخواهید یا نه و کلا هدفتون چیه. اگر فقط برای یک ماه میخواهید، خودتون باید چک کنید تاریخها در یک سال و ماه باشند و در صورتی که نبودند خودتون اصلاح کنید یا به کاربر بگید اصلاح کنه. اگر هم به تفکیک ماه میخواهید میتونید گروهبندی کنید که با دیدن یک مثال متوجه میشید.

رامین مرادی
شنبه 03 تیر 1396, 11:57 صبح
ببینید من کلا کاری که گفتید رو انجام دادم و مشکلی نیست میتونم بین دو تاریخ مشخص جمع تعداد روز برای هر PID حساب میکنم.

فقط یه مسئله هست که اونم اگه تاریخ دوممون از ماه بعد باشه چیکار بکنم.
یعنی تاریخ شروع Date1 و تاریخ پایان Date2 ، خب منم میگم اگه تاریخ دومم افتاده تو ماه دوم . هنگام جمع فقط تا انتهای ماه تاریخ اول حساب کنه.

Mahmoud.Afrad
شنبه 03 تیر 1396, 15:56 عصر
میتونی همون شرطی که برای date1 نوشتی رو برای date2 هم بنویسی.

اما برای راهنمایی بیشتر مثال بزن چه ورودی داری و چه خروجی با چه شرایطی مدنظرت هست.