PDA

View Full Version : جمع تعدای از سطرهای یکفیلد بر اساس فیلد دیگر



amir3321
سه شنبه 22 اردیبهشت 1388, 11:42 صبح
با سلام به همه اساتید
من میخوام یک query بنویسم که مجموع یکفیلد رو براساس فیلد کناری آن بدهد یعنی یک دستور sum که دارای یک شرط میباشد و در خروجی هم جمع ها رو برای هرفیلد کنار بدهد .
یعنی تیبل یک رو به تیبل 2 تبدیل کند :
تیبل 1 :

num
id
100
1
250
2
130
3


تیبل 2 :

Sum(num)
id
100
1
350
2
480
3


لطفا راهنمایی بفرمایید فقط از دستورات قابل اجرا در sql 2000 استفاده شود

scream666_ss
سه شنبه 22 اردیبهشت 1388, 12:37 عصر
سلام این جدولی که مثال زدی نا مفهوم هست یکم بیشتر بگو تا دقیقا بدونیم چی‌ میگی‌ اما فکر کنم راه حلت groupby باید باشه

amir3321
سه شنبه 22 اردیبهشت 1388, 13:44 عصر
با سلام
id num
1 100
2 200
3 300
4 110

این تیبل تبدیل بشه به این تیبل با استفاده از دستورات query sql

id num
1 100
2 300
3 600
4 710

amir3321
پنج شنبه 24 اردیبهشت 1388, 08:03 صبح
بابا یکی نیست یک راهنمایی بکنه پس این همه مدیر کجا هستند.
مشکل من فقط یک کوئری که بتونم دستور sum رو روی یک فیلد بر اساس فیلد دیگری اجرا کنم که برای هر سطر جمع اون سطر با سطرهای قبل از خودش رو قرار بدهد مانند همون تیبل بالا که گذاشتم .
لطفا راهنمایی بفرمایید :عصبانی++::عصبانی++::عصبانی++:: صبانی++::گریه::گریه::گریه::گر ه::گریه::گریه::گریه:

maaaaaa
چهارشنبه 30 اردیبهشت 1388, 13:27 عصر
سلام دوست گرامی

فکر میکنم که سوالتون خیلی وقته که مطرح شده و جوابی هم نگرفتید،من هم سوالتون رو خیلی اتفاقی دیدم و راه حل زیر به ذهنم رسید البته من دو فیلد id1 و id2 را identity شان را yes کردم


( table t1 (id1 int ,col1 int
(table t2 (id2 int , col2 int


create trigger tr1 on t1 after insert
as
insert into t2
select sum(col1)from t1

از تریگر استفاده کردم که بعد از هر بار درج در t1 مجموع مقادیر ستون1 (col1)از جدول 1 در ستون 2 (col2)در جدول2 درج بشه-

البته جواب سوالتون رو در حالتی که مقادیر id دو جدول autoincreamentنباشند نمیدونم.

خوشحال میشم این سوال شما را بقیه دوستان در حالتی که id های دو جدول autoincreament نباشند بدهند.

محمد سلیم آبادی
جمعه 27 آذر 1388, 23:33 عصر
declare @t table (num int , id int)
insert @t values (100,1),(200,2),(300,3),(110,4)

select id, sum=(select SUM(num)
from @t as t2
where t2.id <= t1.id)
from @t as t1
/*
id sum
----------- -----------
1 100
2 300
3 600
4 710
*/

محمد سلیم آبادی
یک شنبه 06 دی 1388, 18:42 عصر
یا با کمک جبر داریم:


select t1.id, sum(t2.num) as sum
from @t as t1
inner join @t as t2
on t1.id >= t2.id
group by t1.id