نمایش نتایج 1 تا 8 از 8

نام تاپیک: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

  1. #1
    کاربر دائمی آواتار rayson
    تاریخ عضویت
    دی 1390
    محل زندگی
    3A+bdn=useL>useR>Repeat
    پست
    322

    Question به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    سلام .
    دوستا ن من دو جدول دارم که میخوام ستون های مشابه را سام کنم.
    برای ستون اول مشکلی ندارد که کد زیر است :
     SqlDataAdapter da2 = new SqlDataAdapter("select sum(B1.T1)from(select sum(tbl_mojaz.sonati)T1 from tbl_mojaz where  convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%' group by tbl_mojaz.id_madrak_tahsili,tbl_mojaz.id_group union all select -sum(tbl_karkard.sonati) from tbl_karkard where  convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%' group by tbl_karkard.id_madrak_tahsili,tbl_karkard.id_group  )B1 ", con2);


    اما برای زمانی که بخواهم ستون دوم اضافه کنم برنامه دچار خطا میشود ، در کل نمیدونم چطور ستون دوم اضافه کنم.
    ممنون میشم راهنمایی کنید.
    با تشکر.

  2. #2
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    سلام داده های نمونه رو بذارید تا دوستان بهتر بتونن راهنمایی کنن

  3. #3
    کاربر دائمی آواتار rayson
    تاریخ عضویت
    دی 1390
    محل زندگی
    3A+bdn=useL>useR>Repeat
    پست
    322

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    نقل قول نوشته شده توسط Salah Sanjabian مشاهده تاپیک
    سلام داده های نمونه رو بذارید تا دوستان بهتر بتونن راهنمایی کنن
    سلام به شکل زیر هستند جداولم و کارش هم مثال زدم .
    من ستون اول را طبق کد بالا(ستون سنتی ) مانده را در آوردم اما برای دو ستون دیگر نمیشه.
    عکس های ضمیمه عکس های ضمیمه

  4. #4
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    سلام

    ;
    WITH Cte AS
    (
    SELECT Code_ozviat,SUM(SakhteShode) AS TotalSakhteShode,SUM(Felezi) AS TotalFelezi,SUM(Sonati) AS TotalSonati
    FROM @Tbl_mojaz
    GROUP BY Code_ozviat
    )
    ,
    Cte2 AS
    (
    SELECT Code_ozviat,SUM(SakhteShode) AS TotalSakhteShode,SUM(Felezi) AS TotalFelezi,SUM(Sonati) AS TotalSOnati
    FROM @Tbl_Karkard
    GROUP BY Code_ozviat
    )

    SELECT Cte.Code_ozviat,ISNULL(Cte.TotalSakhteShode-Cte2.TotalSakhteShode,0),ISNULL(Cte.TotalFelezi-Cte2.TotalFelezi,0),ISNULL(Cte.TotalSonati-Cte2.TotalSOnati,0)
    FROM Cte
    LEFT JOIN Cte2
    ON Cte.Code_ozviat = Cte2.Code_ozviat
    WHERE cte.Code_ozviat=1


    میتونی تو اس کو ال سرور تست کنی بعد تو ویژوال استودیو . البته پیشنهاد نمیکنم به صورت رشته تو پروژه ت بنویسی بهتره به صورت پروسیجر بنویسی بعد پروسیجر رو Call کنی
    یه چیز دیگه که توجه کردم این بود که نمیخواد رو جدول اول Sum بزنی چون ستون ID کلید هست و فقط یک بار تکرار میشه البته من واسه اطمینان چون شما Sum زدین اینکارو کردم . درسته ؟

  5. #5

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    سلام.
    میتونید از روش زیر هم که همون تکمیل شده روش خود شماست استفاده کنید.

    Select Sum (B1.T1) as Sonati , Sum(b1.t2) as TotalFelezi, sum(b1.t3 ) as totalsakhteshode
    From
    (select sonati as T1 ,Felezi as T2,SakhteShode as T3
    from tbl_mojaz where convert (varchar,code_ozviat)
    like N'%" + txt_code_ozviat.Text + "%'
    group by tbl_mojaz.id_madrak_tahsili,tbl_mojaz.id_group
    union all
    select -sonati as T1 ,-Felezi as T2,-SakhteShode as T3
    from tbl_karkard
    where convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%'
    group by tbl_karkard.id_madrak_tahsili,tbl_karkard.id_group ) as B1


    فقط میتونید از لحاظ Performance هر دو Query رو باهم اجرا کنید و Execution Plan رو نیز انتخاب کنید و ببینید Plan کدوم مناسبتره و هزینه کدوم یک از این Query ها کمتره.

  6. #6
    کاربر دائمی آواتار rayson
    تاریخ عضویت
    دی 1390
    محل زندگی
    3A+bdn=useL>useR>Repeat
    پست
    322

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    سلام مرسی از دوستان.
    طبق گفته های آقای صادقیان تغییر و به نتیجه رسیدم .
    یه چیز دیگه که توجه کردم این بود که نمیخواد رو جدول اول Sum بزنی چون ستون ID کلید هست و فقط یک بار تکرار میشه البته من واسه اطمینان چون شما Sum زدین اینکارو کردم . درسته ؟
    جدول مجاز هم مقادیر دیگری برای یک کد عضویت وارد میشه به همین دلیل مجموع آن هم خواستم.

    دوستان اگر توجه کردید در کد من :
    Group by id_madrak_tahsili , id_group

    در هر دو جدول داشتم. که مقادیر طبق این دو متمایز میکردم.
    من دو جدول دیگر به نام های گروه و مدرک تحصیلی دارم حال میخوام علاوه بر این سه مقدار(سنتی ، فلزی ، ساخته شده ) نمایش داده شده گروه و مدرک تحصیلی هم نمایش بدم ، کدش بلدم که باید نام گروه و نام مدرک سلکت کنم و با ای دی مقایسه کنم و مقادیر مشابه را نمایش بدم . این کد زمانی میتونستم بنویسم خودم به راحتی که کد بالا نبود ولی الان کد بالا که نوشتم نمیدونم این 2 ستون دیگر را چطوری بنویسم که برنامه خطا نگیره.
    یک نمونه کد میزارم که باعث میشه شکل زیر به وجود بیاد:
     SqlDataAdapter da1 = new SqlDataAdapter("select  tbl_karkard.add_sal,sum(tbl_karkard.sonati),sum(tb  l_karkard.felezi),sum(tbl_karkard.sakhteshode),gro  ups.group_name,madrak_tahsili.name_madrak from tbl_karkard,groups,madrak_tahsili where groups.id_group=tbl_karkard.id_group and madrak_tahsili.id_madrak_tahsili=tbl_karkard.id_ma  drak_tahsili and convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%' group by tbl_karkard.add_sal,tbl_karkard.id_group,tbl_karka  rd.id_madrak_tahsili,groups.group_name,madrak_tahs  ili.name_madrak", con1);


    دو تا ضربدر ابی از کد بالا پیروی میکنند حال جدول پایین ( جدول 3 ) هم چیزی که کدش در پست قبلی گذاشتم . حال چطور میتونم مثل دو جدول دیگر گروه و مدرک شخص را هم اضافه کنم.
    با تشکر.
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله rayson : یک شنبه 12 آبان 1392 در 22:40 عصر

  7. #7
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام.
    میتونید از روش زیر هم که همون تکمیل شده روش خود شماست استفاده کنید.

    Select Sum (B1.T1) as Sonati , Sum(b1.t2) as TotalFelezi, sum(b1.t3 ) as totalsakhteshode
    From
    (select sonati as T1 ,Felezi as T2,SakhteShode as T3
    from tbl_mojaz where convert (varchar,code_ozviat)
    like N'%" + txt_code_ozviat.Text + "%'
    group by tbl_mojaz.id_madrak_tahsili,tbl_mojaz.id_group
    union all
    select -sonati as T1 ,-Felezi as T2,-SakhteShode as T3
    from tbl_karkard
    where convert (varchar,code_ozviat) like N'%" + txt_code_ozviat.Text + "%'
    group by tbl_karkard.id_madrak_tahsili,tbl_karkard.id_group ) as B1


    فقط میتونید از لحاظ Performance هر دو Query رو باهم اجرا کنید و Execution Plan رو نیز انتخاب کنید و ببینید Plan کدوم مناسبتره و هزینه کدوم یک از این Query ها کمتره.
    اینم یه روش ولی یه نکته جناب صادقیان و اونم اینکه تو Derived تیبل دیگه نمیخواد گروه بندی کنید چون شما از توابع تجمعی استفاده نکردین

  8. #8

    نقل قول: به چه صورت از دستور Sum برای چند ستون استفاده کنیم ؟

    اوههه درسته/چون من کد ایشون رو کپی کردم دیگه به این نکته توجه نکردم.

تاپیک های مشابه

  1. استفاده از AVG برای چند ستون در یک Select
    نوشته شده توسط m_u3fi در بخش T-SQL
    پاسخ: 1
    آخرین پست: پنج شنبه 12 آبان 1390, 14:50 عصر
  2. سوال: بسط دستور update برای چند فیلد
    نوشته شده توسط veniz2008 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 11 شهریور 1389, 00:47 صبح
  3. سوال: دستور update برای چند فیلد
    نوشته شده توسط veniz2008 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: پنج شنبه 11 شهریور 1389, 00:24 صبح
  4. سوال: مشکل در دستور SUM برای Query های تودرتو
    نوشته شده توسط Silent Ninja در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 0
    آخرین پست: سه شنبه 01 بهمن 1387, 04:47 صبح
  5. چطوری یه validator را برای چند textbox استفاده کنم؟
    نوشته شده توسط khz-web1 در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: پنج شنبه 27 دی 1386, 11:37 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •