50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

استفاده از چهار عمل اصلی جمع ، تفریق ، ضرب و تقسیم SQL Server

با سلام و درود خدمت دوستان عزیز

برای من سوالی پیش اومد که آیا می شود در SQL Serve در جستجو مقدار دو حاصل را محاسبه کرد.

مثلا ما 3 جدول داریم که با این صورت است جدول T که دارای فیلدهای cod و Name هست (فیلد cod کلید اصلی) و جدول T1 که دارای فیلدهای cod و Number1 هست و جدول T2 که دارای فیلدهای cod و Number2 هست . حالا می خواهی اطلاعاتی از فردی مثلا با کد 14 را به این صورت جستجو نماییم که در خروجی آن دارای 5 ستون باشد که در آن کد فرد(در اینجا مثلا 14 بود) , نام , حاصل جمع مقادیر فیلد (Number1 ) این فرد , حاصل جمع مقادیر فیلد (Number2 ) فرد , و حاصل تفریق دو ستون قبل

که سوال من در اصل در مورد آخرین ستون بالا می باشد که چگونه حاصل جمع فیلدهای (Number1 و Number2 ) را که بدست آورده ایم از هم کم نماییم حاصل را در یک ستون جدید نمایش دهیم.

بسیار سپاسگذار هستم.

پرسیده شده در 1393/11/07 توسط

5 پاسخ

1

البته که روش مهندس احمدی دقیق هست ولی فقط خواستم ببینم میشه روشی متفات تر درست کرد یا خیر.

Code
Select T.Code,T.Name,sum(t1.Number1)as sumnumber1,SUM(T2.Number2)as sumnumber2 from T,T1,T2 
WHERE T.Code=T1.Cod and T1.Cod='14' and T2.Code=T1.Cod GROUP By T.Name,T.Code

در این مثال فقط کد 14 مورد بررسی قرار گرفته

پاسخ در 1393/11/07 توسط
3

برای اینکار باید جداول رو با هم Join کنید بعد از Join کردن، با تابع SUM می تونید جمع مقادیر رو داشته باشید:

Code
select t.Cod,t.Name,SUM(t1.Number1) [Number1],SUM(t2.Number2) [Number2] from T
inner join T1
on t.Cod = t1.Cod
inner join T2
on t.Cod = t2.Cod
group by t.Cod,t.Name

نتیجه رو هم در شکل زیر میبینی:

برای اینکار باید جداول رو با هم Join کنید بعد از Join کردن، با تابع SUM می تونید جمع مقادیر رو داشته باشید:

<sql>
select t.Cod,t.Name,SUM(t1.Number1) [Number1],SUM(t2.Number2) [Number2] from T
inner join T1
on t.Cod = t1.Cod
inner join T2
on t.Cod = t2.Cod
group by t.Cod,t.Name
<sql>

نتیجه رو هم در شکل زیر میبینی:

||http://dba.tosinso.com/files/get/73f2c9de-6396-412c-a9f3-5e405eae8621||
پاسخ در 1393/11/07 توسط
0

وقتی دستور را هم به صورت گفته شده می نویسیم با استفاده از inner join حاصل جمع Number1 را دو برابر مقدار واقعی نمایش میدهد.

Code
select

t1.Cod, t1.Name, SUM(t1.Number1) [Number1], SUM(t2.Number2) [Number2], (SUM(t1.Number1)-SUM(t2.Number2)) Result

from T1

inner join T2

on t1.Cod = t2.Cod where t1.Cod ='14'

group by t1.Cod,t1.Name

علت این اشتباه در جمع کردن چیست؟

پاسخ در 1393/11/14 توسط
1

سلام

اگه دستور را به شکل زیر بنویسیم:

select T.Code ,SUM(T1.Number1),SUM(T2.Number2),(SUM(T1.Number1) - SUM(T2.Number2)) from T,T1,T2 where T.Code=T1.Cod and T1.Cod='14' and T2.Code=T1.Cod GROUP By T.Name,T.Code

حاصل جمع اولی را 2 برابر نمایش می دهد چرا؟

مثلا اگر حاصل جمع مقادیر فیلد Number1 می شود 5 در کد بالا نمایش می دهد 10 علت چیست؟

پاسخ در 1393/11/08 توسط
1

من یه نکته رو تو سوال شما دقت نکرده بودم که ستون پنجم حاصل تفریق رو نمایش بده. با کد زیر اینکار هم انجام میشه:

Code
select 
    t.Cod,
    t.Name,
    SUM(t1.Number1) [Number1],
    SUM(t2.Number2) [Number2], 
    (SUM(t1.Number1)-SUM(t2.Number2)) Result  
from T
inner join T1
on t.Cod = t1.Cod
inner join T2
on t.Cod = t2.Cod
group by t.Cod,t.Name
پاسخ در 1393/11/07 توسط

پاسخ شما