PDA

View Full Version : چطوری اطلاعات مشترک در یک جدول را با هم جمع کنم ؟



rayson
شنبه 06 مهر 1392, 20:26 عصر
سلام دوستان.
خسته نباشید.
من میخوام اطلاعات مشترک در یک جدول را با هم جمع کنم .
مسیر کار :
ابتدا اطلاعات را بر حسب کد عضویت جستجو کرده و در DT میریزم.( تا اینجا مشکلی نیست)
بعد میخوام سطر هایی که سال مشترک دارند فیلد هاش جمع شودند.
مثلا شکل زیر اطلاعات بعد از سلکت کردن بعد از عمل سلکت بر حسب کد عضویت میباشد.
http://www.uploadtak.com/images/i2_DT_add.jpg
لینک کمکی:
http://www.uploadbaz.com/ee28bnh80tgt/DT_add.jpg
لطفا راهنمایی کنید.
با تشکر

veniz2008
شنبه 06 مهر 1392, 21:54 عصر
سلام.
نیازی نیست که اول براساس کد عضویت فیلتر کنی و بعد دوباره بر روی این نتیجه عملیات انجام بدی. کل عملیات رو میتونی در یک کوئری ساده خلاصه کنی.
برای این کار باید از Group By استفاده کنی تا بتونی سال های مختلف رو گروه بندی کنی. منظور از MyYear فیلد سال هست.

select MyYear,sum(Field1),sum(Field2) from TblTest WHERE OzviatID = 500 group by MyYear

rayson
یک شنبه 07 مهر 1392, 03:03 صبح
مرسی .
حال یک سوال دیگر پیش اومد در این روش که به کار بردید میتوان دو جدول را ستون های مشابه را از هم کم کرد ؟
مثلا: جدول 1 : ستون 1 و ستون 2
جدول 2 : ستون 1 و ستون 2
جداول ستون هایشان هم نام هستند .
حال مجموع کل ستون 1 از جدول 1 تفریق بشه با کل ستون 1 جدول 2 .
اگر نمیشه ( من میتونم جداگانه 2 جدول را بگیرم و ستون ها را از هم کم کنم و جواب را در یک متغیر بریزم ؟)
مثلا:
double clm1 = Int32.Parse((dt.Columns["column1"].ToString()) - (dt1.Columns["column1"].ToString()));
یک دستور شبیح این منظورم هست. میدونم اشتباه است این دستور ولی خوب فکر کردم منظورم با این مثال بهتر متوجه میشید.
ممنون بابات راهنمایی.
با تشکر.

veniz2008
یک شنبه 07 مهر 1392, 15:31 عصر
جدول 1 : ستون 1 و ستون 2
جدول 2 : ستون 1 و ستون 2
جداول ستون هایشان هم نام هستند .
حال مجموع کل ستون 1 از جدول 1 تفریق بشه با کل ستون 1 جدول 2 .

داریم :

A - B = A + (-B)
اینطوری بنویس :

select MyYear,sum(B1.T1)
from(
select Table_1.MyYear,sum(Table_1.Field1)T1 from Table_1 where OzviatID = 500 group by Table_1.MyYear
Union All
select Table_2.MyYear,-sum(Table_2.Field1) from Table_2 where OzviatID = 500 group by Table_2.MyYear
) B1 group by MyYear

rayson
یک شنبه 07 مهر 1392, 15:58 عصر
مرسی از شما.
میتوان دستور را با دو یا سه group by فعال کرد به شکل زیر ؟:
select MyYear,id_madrak,sum(Field1),sum(Field2) from TblTest WHERE OzviatID = 500 group by MyYear and group by id_madrak
روشی که من به کار میبرم درست است ؟
زیرا من دسترسی ندارم به ویژوال سر کار هستم تا 6 عصر . الان با گوشی در سایت هستم. ببخشید.
با تشکر
.

veniz2008
یک شنبه 07 مهر 1392, 17:25 عصر
مرسی از شما.
میتوان دستور را با دو یا سه group by فعال کرد به شکل زیر ؟:
select MyYear,id_madrak,sum(Field1),sum(Field2) from TblTest WHERE OzviatID = 500 group by MyYear and group by id_madrak
روشی که من به کار میبرم درست است ؟
زیرا من دسترسی ندارم به ویژوال سر کار هستم تا 6 عصر . الان با گوشی در سایت هستم. ببخشید.
با تشکر
.
برای آوردن چند فیلد در group by اونها رو با یک کاما (,) از هم جدا کنید.
موفق باشید.

rayson
یک شنبه 14 مهر 1392, 18:07 عصر
سلام دوستان.
دستور من خطای Incorrect syntax near the keyword 'group'. میده . زمانی که یک گروه فقط مینویسم و ,tbl_mojaz.id_group,tbl_mojaz.id_madrak_tahsili هم سلکت نمیکنم مشکلی ندارد ولی وقتی گروه دیگه و ,tbl_mojaz.id_group,tbl_mojaz.id_madrak_tahsili اضافه میکنم این خطا از من میگیره دستور اس کیو ال من به صورت زیر است:
SqlDataAdapter da = new SqlDataAdapter("select tbl_mojaz.add_sal,sum(tbl_mojaz.sonati),sum(tbl_mo jaz.felezi),sum(tbl_mojaz.sakhteshode),tbl_mojaz.i d_group,tbl_mojaz.id_madrak_tahsili from tbl_mojaz where convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%' group by tbl_mojaz.add_sal , group by tbl_mojaz.id_group , group by tbl_mojaz.id_madrak_tahsili", con);

اگر هم ,tbl_mojaz.id_group,tbl_mojaz.id_madrak_tahsili + یک گروه سلکت کنم خطای :
Column 'tbl_mojaz.id_group' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. میده .
این دو آی دی کلید خارجی هستند.
ممنون میشم راهنمایی کنید .
با تشکر /

rayson
یک شنبه 14 مهر 1392, 18:49 عصر
مشکل پیدا کردم به این صورت باید منوشتم .
SqlDataAdapter da = new SqlDataAdapter("select tbl_mojaz.add_sal,sum(tbl_mojaz.sonati),sum(tbl_mo jaz.felezi),sum(tbl_mojaz.sakhteshode),tbl_mojaz.i d_group,tbl_mojaz.id_madrak_tahsili from tbl_mojaz where convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%' group by tbl_mojaz.add_sal,tbl_mojaz.id_group,tbl_mojaz.id_ madrak_tahsili ", con);