PDA

View Full Version : سوال در مورد جمع کردن یک فیلد در هر رکورد



tehran11
سه شنبه 08 بهمن 1392, 20:53 عصر
با سلام

من یک تیبل دارم با سه تا فیلد
http://barnamenevis.org/asset.php?fid=109600&uid=75953&d=1390930847

حالا میخوام که با یک کوئری یک خروجی به این شکل داشته باشم
http://barnamenevis.org/asset.php?fid=109601&uid=75953&d=1390930848

یعنی ستون sum در هر رکورد برابر با مقدار اولین رکورد تا رکورد فعلی ستون value بشه

با تشکر

starting
سه شنبه 08 بهمن 1392, 21:39 عصر
امکان دارید بگید که داده های این ستون چه استفاده ای قرار هست ازشون بشه؟

--2012
SELECT *, SUM(value) OVER(ORDER BY Id) AS [Sum]
FROM t
--2000
SELECT *, (SELECT SUM(value) FROM table WHERE Id <= t.Id) AS [Sum]
FROM table t

محمد قانعی
سه شنبه 14 بهمن 1393, 11:18 صبح
SELECT *, (SELECT SUM(value) FROM table WHERE Id <= t.Id) AS [Sum]
FROM table t
باسلام .کسی میتونه به من بگه t تو این کد دقیقا چیکار می کنه ؟
جالبه که وقتی نباشه کد ها اشتباه عمل میکنن و جوابی که در هر ردیف میزارن یک جواب هست اونم جمع کل ستون value

sajadsobh
سه شنبه 14 بهمن 1393, 15:34 عصر
با تشکر از جواب هوشمندانه ی starting (http://barnamenevis.org/member.php?321486-starting) :چشمک:
خب چون قرار بوده از داده های همون جدول دوباره استفاده بشه و نمیشه اسم همون جدول رو بکار برد به همون دلیل که خودتون فهمیدین (جمع کل ستون ها رو میده) واسه همین میان یه نام مستعار به این جدول میدن. که اون جوابی که میخواین بدست بیارین.

مهدی نان شکری
سه شنبه 14 بهمن 1393, 15:47 عصر
روش مطرح شده درست است ولی از 2012 به بعد بهتر است به کمک Window Function این کار انجام گیرد چون Performance بالاتری خواهد داشت.


select *,sum(Value) over(order by getdate() ROWS BETWEEN UNBOUNDED PRECEDING AND Current Row)
from table