View Full Version : ساده ترین دستور sql برای ساخت این query
pooyeshpajooh
چهارشنبه 29 آذر 1385, 19:56 عصر
جدولی بفرم زیر داریم
code meghdar
------------------------------------------
5- ********* 1
10 ********* 2
6- ********* 1
4 ********* 1
4- ********* 2
ساده ترین دستور sql که بتوان گزارش زیر را ساخت یعنی جمع مثبتها را در sum1وجمع منفی ها را در sum2(برای هر کد) ذخیره کند چیست
code sum1 sum2
-----------------------------------------
11- ** 4 ** 1
6 ** 10 ** 2
DonetKarvb
پنج شنبه 30 آذر 1385, 01:18 صبح
فکر کنم راه سادتری هم وجود داشته باشه ولی این رو هم از من داشته باش
Select Code,Sum(p) ,Sum(N) From
(Select Code,Case
when Megdar>0 then megdar
end as p
,Case
when Megdar<0 then megdar
end as N
From B
Group By Code,Megdar
) Drvtbl
Group By Code
AminSobati
پنج شنبه 30 آذر 1385, 03:27 صبح
روشی که در پست قبلی ذکر شده خوبه ولی به نظرم Query داخلی نباید Group By داشته باشه چون باعث میشه مثلا اگر یک رکورد دیگه هم با مقادیر 5- ****** 1 داشته باشیم (تکراری) اون رو بعنوان تکراری حذف میکنه و نتیجه اشتباه میشه. ولی بدون Group By این رکورد تکراری هم در محاسبات شرکت میکنه. حالا اون رو با کمی ساده تر کردن میشه نوشت:
select c1,
sum(case when c2>0 then c2 end),
sum(case when c2<0 then c2 end)
from tmp group by c1
ضمنا ساختن این ایندکس به سرعت Query بسیار کمک میکنه:
create index ix1 on tmp(c1,c2)
mzjahromi
پنج شنبه 30 آذر 1385, 07:36 صبح
از این روش هم میشه استفاده کرد
select c1,Sum(c1+abs(c1))/2,Sum(c1-Abs(c1))/2
From...
ولی عملیات محاسباتی اش بیشتر از اونیه که آقای ثباتی گفت
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.