PDA

View Full Version : محاسبه تفاضل مجموع قیمت کالا های فروش رفته از کالاهای خریداری شده



javad_r_85
یک شنبه 13 مرداد 1392, 20:49 عصر
سلام.
نیاز به یک کوئری واسه محاسبه تفاضل مجموع قیمت کالاهای فاکتور فروش از فاکتور خرید دارم واسه محاسبه سود کالا ها از دستور زیر استفاده کردم اما رکورد اول را برای بقیه رکوردها تکرار می کند.



SELECT (
(SELECT Sum([Price]) From VW_FactorDetails Where TypeFactor=2 Group By [PID] )
-
(SELECT Sum([Price]) From VW_FactorDetails Where TypeFactor=0 Group By [PID])
) as p,[PID] From VW_FactorDetails Group By [PID]

محمد سلیم آبادی
یک شنبه 13 مرداد 1392, 23:59 عصر
شاید منظورت اینه؟
SELECT SUM(CASE WHEN TypeFactor = 2 THEN Price END) - SUM(CASE WHEN TypeFactor = 0 THEN Price END) AS p, PID
FROM VW_FactorDetails
GROUP BY PID

javad_r_85
دوشنبه 14 مرداد 1392, 08:36 صبح
شاید منظورت اینه؟

دقیقا منظورم همینه .
با تشکر

محمد سلیم آبادی
دوشنبه 14 مرداد 1392, 17:22 عصر
اگر علاقه مند هستی که روش های دیگه را برای تمرین یادبگیرین. این مساله رو توسط FULL OUTER JOIN براتون حل کردم:
/*Equivalent*/
;with c (pid, total) as
(
select pid, sum(price)
from VW_FactorDetails
where typeFactor = 2
group by pid
),
d (pid, total) as
(
select pid, sum(price)
from VW_FactorDetails
where typeFactor = 0
group by pid
)
select isnull(c.pid, d.pid) as pid,
isnull(c.total, 0) - isnull(d.total, 0) as p
from c
full outer join d
on c.pid = d.pid