ورود

View Full Version : مشکل در مجموع گرفتن از جدول



armageedon
سه شنبه 15 آبان 1397, 11:54 صبح
با سلام و وقت بخیر خدمت اساتید گل
من در یک پروژه مجبورم از سه تا جدول اطلاعاتی رو واکشی کنم و مجموع چند پارامتر رو بگیرم ولی یکی از مجموع ها باید بازای هر چند رکورد که تازه اونم معلوم نیست چند تایی هست و با یک ایدی جداگانه مشخص میشه جمع کنم ممنون میشم اگر راهنمایی بفرمایید
طبق عکس پایین میخواهم هر جا که formnum فرق میکنه هر جا که lineid برابر داشت مجموع prdtime رو بگیره یعنی اگر formnum 1 بود خط هم سه بود با خط سه دیگه با formnum 4 جمع بشه ولی با کدی که من نوشتم چند فیلد درست کار میکنه ولی برای بقیه میاد مجموع کل میگیره باز
149214
اینم کدی که من نوشتم
select sum(stoptime)as[مدت توقف],sum(Table_production.prdtime)as[مجموع زمان تولید] ,formnum,prddate,prdgroup,prdsize,Table_stop.prdna me,prdline,Table_production.prdshift,machnametext, unitname,Qcdes,runnerdes,svdes,techdes,stoptypetex t,personnelcode,personnamefamily from Table_production left join Table_Nextproduction on prdID=nfrprdid inner join Table_stop on prdID=formnum left join Table_perworkline on Table_stop.personnelcode=Table_perworkline.personc ode and prdID=frprdidwhere machnametext=N'فیلر'
group by formnum,prddate,prdgroup,prdsize,Table_stop.prdnam e,prdline,Table_production.prdshift,machnametext,u nitname,Qcdes,runnerdes,svdes,techdes,stoptypetext ,personnelcode,personnamefamily
order by prdline desc,prdname asc

armageedon
یک شنبه 20 آبان 1397, 13:53 عصر
مرسی از دوستان که اینقدر لطف دارن و جواب میدن

حمیدرضاصادقیان
پنج شنبه 24 آبان 1397, 10:18 صبح
سلام
شما باید از Window Function ها استفاده کنید
به این صورت

select sum(stoptime)as[مدت توقف],sum(Table_production.prdtime) over(partition by lineid order by prdline,prdname )
as[مجموع زمان تولید] ,formnum,prddate,prdgroup,prdsize,Table_stop.prdna me,prdline,Table_production.prdshift,machnametext, unitname,Qcdes,runnerdes,svdes,techdes,stoptypetex t,personnelcode,personnamefamily from Table_production left join Table_Nextproduction on prdID=nfrprdid inner join Table_stop on prdID=formnum left join Table_perworkline on Table_stop.personnelcode=Table_perworkline.personc ode and prdID=frprdidwhere machnametext=N'فیلر'
order by prdline desc,prdname asc