PDA

View Full Version : استفاده از تابع sum در برنامه



soniarose
دوشنبه 09 آذر 1388, 16:17 عصر
سلام دوستان من در جدول بانکم سه ستون دارم که میخوام مقادیر ستون اول باهم جمع بشه و مقادیر ستون دوم هم با هم جمع بشه سپس مقادیر اونها از هم کم بشه و مقدار اون در ستون سوم قرار بگیره لطفا راهنمایی کنید ممنون

حسین شهریاری
سه شنبه 10 آذر 1388, 10:22 صبح
اگه میخاین کل مقادیر ستونها جمع بشن اینطوری
select sum(column1)as cname1,sum(colum2)as cname2,sum(column1-column2)as results from table
این ساده ترین حالت هستش ولی اگه قرار باشه جمع زدن و یا هر عمل محاسبات جمعی دیگه ای بر اساس مقدار یه فیلد خاصی انجام بشه(دسته بندی بشه) اون وقت بنا بر نیاز باید از Group By استفاده کرد

موفق باشید

محمد سلیم آبادی
سه شنبه 10 آذر 1388, 15:27 عصر
سلام دوست عزیز،
سوالتان برایم کاملا روشن نیست.
منظور از جمله ی "در ستون سوم قرار بگیره..." این است که مقادیر این ستون(ستون سوم) Update بشه بر اساس تفاضل مجموع مقادیر دو ستون اول و دوم؟


update table_1
set col3 = (select SUM(col1)-SUM(col2)
from table_1)

soniarose
سه شنبه 10 آذر 1388, 16:03 عصر
منظورم اینه که شما فرض کنید در ابتدا یک سطر از جدولم دارای مقدار هست وقتی عمل بالا انجام میشه مقدار اون در ستون سوم روبروی همون سطر قرار میگیره و بعد وقتی که مقادیر سطر دوم هم وارد میشه دوباره کد بالا اجرا میشه و در این زمان جواب فقط در ستون سوم روبروی سطر دوم قرار میگیره و تمام مقادیر ستون سوم عوض نمیشه ممنون

محمد سلیم آبادی
سه شنبه 10 آذر 1388, 16:38 عصر
اینو امتحان کنید بیینید همون چیزی است که دنبالش هستین (به Result توجه کنین)


--=================
create table #a (col1 int, col2 int, col3 int)
insert into #a (col1, col2) values (1, 1), (3, 1), (5, 3)
--================= specify identity
declare @a table (RowNumber int, col1 int, col2 int, col3 int)
insert into @a
select ROW_NUMBER() over(order by rand()),
col1, col2, null
from #a
--================= Update using FROM Clause for aliasing
update @a
set col3 = (select SUM(col1) - SUM(col2)
from @a as A
where A.RowNumber <= aa.RowNumber)
from @a aa
--================= Update based on a join and using OUTPUT
update #a
set col3=a2.col3
output inserted.col1,
inserted.col2,
inserted.col3
from #a as a1
inner join @a as a2
on a1.col1=a2.col1
and a1.col2=a2.col2
--================ Result To Text
/*
col1 col2 col3
----------- ----------- -----------
1 1 0
3 1 2
5 3 4
*/




msalim