select s.part_no
,s.part_name
,s.uom
,i.Invoice_Quantity
,r.Return_Quantity
,p.Issue_Quantity
,sr.Quantity
,rp.Return_Quantity
,er.Quantity
from dbo.dri_Stock as s
left join
(
select part_no,sum(Invoice_Quantity) as Invoice_Quantity
from dbo.dri_InwardEntry
where month(_date)=6 and year(_date)=2012
group by part_no
) as i
on s.part_no=i.part_no
left join
(
select part_no,sum(Return_Quantity) as Return_Quantity
from dbo.dri_ReturnToCustomer
where month(date)=6 and year(date)=2012
group by part_no
) as r
on s.part_no=r.part_no
left join
(
select part_no,sum(Issue_Quantity) as Issue_Quantity
from dbo.dri_IssueToProd
where month(date)=6 and year(date)=2012
group by part_no
)as p
on s.part_no=p.part_no
left join
(
select part_no,sum(Quantity) as Quantity
from dbo.dri_ShortReceipt
where month(date)=6 and year(date)=2012
group by part_no
)as sr
on s.part_no=sr.part_no
left join
(
select part_no,sum(Return_Quantity) as Return_Quantity
from dbo.dri_ReceiptFromProd
where month(date)=6 and year(date)=2012
group by part_no
)as rp
on s.part_no=rp.part_no
left join
(
select part_no,sum(Quantity) as Quantity
from dbo.dri_ExcessReceipt
where month(date)=6 and year(date)=2012
group by part_no
)as er
on s.part_no=er.part_no
where i.invoice_quantity>0
我想在输出中添加一列,即 stockBalance
我该怎么做:
计算StockBalance的公式将为(i.Invoice_Quantity + rp.Return_Quantity + er.Quantity) - (r.Return_Quantity + p.Issue_Quantity + sr.Quantity)
答案 0 :(得分:1)
只需将计算添加到选择中即可。我会在每个值周围添加ISNULL
,以防它们因左连接而为空。
select s.part_no,s.part_name,
s.uom,i.Invoice_Quantity,
r.Return_Quantity,
p.Issue_Quantity,sr.Quantity,
rp.Return_Quantity,er.Quantity,
ISNULL(i.Invoice_Quantity, 0) + ISNULL(rp.Return_Quantity, 0)
+ ISNULL(er.Quantity, 0)) - (ISNULL(r.Return_Quantity, 0)
+ ISNULL(p.Issue_Quantity, 0) + ISNULL(sr.Quantity, 0)) AS StockBalance
from dbo.dri_Stock as s
left join (
select part_no,sum(Invoice_Quantity) as Invoice_Quantity
from dbo.dri_InwardEntry
where month(_date)=6 and year(_date)=2012
group by part_no ) as i on s.part_no=i.part_no
left join (
select part_no,sum(Return_Quantity) as Return_Quantity
from dbo.dri_ReturnToCustomer
where month(date)=6 and year(date)=2012
group by part_no) as r on s.part_no=r.part_no
left join (
select part_no,sum(Issue_Quantity) as Issue_Quantity
from dbo.dri_IssueToProd
where month(date)=6 and year(date)=2012
group by part_no) as p on s.part_no=p.part_no
left join (
select part_no,sum(Quantity) as Quantity
from dbo.dri_ShortReceipt
where month(date)=6 and year(date)=2012
group by part_no) as sr on s.part_no=sr.part_no
left join (
select part_no,sum(Return_Quantity) as Return_Quantity
from dbo.dri_ReceiptFromProd
where month(date)=6 and year(date)=2012
group by part_no) as rp on s.part_no=rp.part_no
left join (
select part_no,sum(Quantity) as Quantity
from dbo.dri_ExcessReceipt
where month(date)=6 and year(date)=2012
group by part_no ) as er on s.part_no=er.part_no
where i.invoice_quantity>0