PDA

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



MahmoodM30
شنبه 26 مهر 1393, 17:14 عصر
سلام دوستان من دوتا جدول دارم که یکی کالا و دومی انبار هست که با View به هم ربط دادم و جوین کردم که فیلد ها شده

NameKala-Vorodi-VKH با نام جدول ViewKala

که فیلد نام کالا برای جدول کالا و دو تا فیلد دیگه برای انبار هست

فیلد ورودی تعداد ورودی و خروجی تو انبار رو میگیره و با مقدار 0 و 1 مشخص میکنه که این برای ورود به انبار بوده یا خروج که اگه مقدار فیلد VKH=0 کالا وارد انبار شده و 1 باشه یعنی خروجی

حالا من میخوام مقدار کل ورودی و خروجی از انبار رو نشون بدم یعنی اونایی که مقدار فیلد VKH اونها 0 و 1 هست و تو یه دیتاگرید نشون بدم

فقط میخوام برای تمامی کالا ها باشه یعنی ممکنه 100 نوع کالا باشه و میخوام که یه کوئری بنویسم برای همه کالا ها رو تو خروجی نشون بده ممنون میشم دوستان راهنمایی کنن

البته کلی گشتم ولی نتونستم حلش کنم مثلا یه کد هایی به این شکل بود که میشد داخل تابع SUM شرط نوشت

SUM(CASE WHEN D.MetalType='Gold' THEN D.Weight ELSE 0 END) AS TotGold

parvizwpf
شنبه 26 مهر 1393, 17:47 عصر
select Kala.nameKala,Sum(Anbar.Vorodi) from Kala Kala join anbar Anbar on Kala.id=Anbar.KalaId
group by Kala.id

امیدوارم درست نوشته باشم.

MahmoodM30
شنبه 26 مهر 1393, 17:58 عصر
نه کار نمیکنه دوست عزیز این با دو شرط که نشون نمیده فک کنم

asemoon barooni
دوشنبه 28 مهر 1393, 01:23 صبح
جواب parvizwpf (http://barnamenevis.org/member.php?243106-parvizwpf) ایشون کاملا دست هستش ولی توضیح شما گویا نیست به صورت واضح تر توضیح دهید تا منظورتون رو متوجه بشیم و دقیق راهنمایی کنیم ..

MahmoodM30
دوشنبه 28 مهر 1393, 10:33 صبح
جدول کالا
http://barnamenevis.org/attachment.php?attachmentid=124706&d=1413707430

جدول انبار
http://barnamenevis.org/attachment.php?attachmentid=124707&d=1413707452

اینم کد View که ایجاد کردم و جوین شدن این دو جدول










SELECT dbo.TBLKala.name_kala, dbo.TBLKala.noe_kala, dbo.TBLAnbar.vorodi, dbo.TBLAnbar.geymate_kol, dbo.TBLAnbar.VKH
FROM dbo.TBLAnbar INNER JOIN
dbo.TBLKala ON dbo.TBLAnbar.code_kala = dbo.TBLKala.code_kala







من قبلا برای ورود و خروج دو تا فیلد در نظر میگرفتم یعنی اگه کالا وارد میشد فیلد مربوط به خودش پر میشد و اونیکی مقدارش 0 میشد و برعکس برای خروج کالا
ولی ایندفه تصمیم گرفتم تعداد فیلد ها رو کاهش بدم ولی نمیتونم عملیاتی انجام بدم

حالا عملیاتی که میخوام انجام بدم اینه

ممکنه 100 نوع کالا باشه سیمان گچ ایزوگام سفال و ..... حالا میخوام کالایی که خارج شده و وارد شده و جمع کل و میانگین این کالا ها رو تک به تک و تو هر سطر دیتاگیرید نشون بدم

aslan
دوشنبه 28 مهر 1393, 11:49 صبح
سلام
اگر فیلد VKH نشانگر ورودی / خروجی کالا هستش از کوئری پست شماره 2 استفاده کنید با دستور Case ..... When برای جداسازی ورودی و خروجی ......
چیزی شبیه آخرین پست لینک زیر :
http://stackoverflow.com/questions/2753255/how-to-sum-columns-on-multiple-conditions-in-a-group-by

MahmoodM30
دوشنبه 28 مهر 1393, 14:55 عصر
ممنون تونستم با این کوئری نشون بدم

select name_kala,noe_kala,SUM(Case When VKH = 0 Then vorodi End) AS JMV,SUM(Case When VKH = 1 Then vorodi End) AS JMK FROM View2 GROUP BY name_kala,noe_kala

حالا میخواستم حالا میخواستم حاصل JMV و JMK رو از هم کم کنم ممنون میشم دوستان راهنمایی کنن

ham3d1988
سه شنبه 29 مهر 1393, 07:58 صبح
سلام میتونید دوباره ازش select کنید

select *,a.JMV-a.JMK as Diff from
(select name_kala,noe_kala,SUM(Case When VKH = 0 Then vorodi End) AS JMV,SUM(Case When VKH = 1 Then vorodi End) AS JMK FROM View2 GROUP BY name_kala,noe_kala)a