2012-07-06 79 views
0
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 

我想在我的輸出添加列即stockBalanceSQL服務器計算

我怎麼可以這樣做:

公式計算StockBalance將(我(r.Return_Quantity + p.Issue_Quantity + sr.Quantity)

+0

順便問一下這個查詢的性能如何? – 2012-07-06 14:54:17

回答

1

只需將您的計算添加到select即可。如果由於您的左連接而導致它們爲空,我會在每個值周圍添加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 
+0

謝謝先生norlando求助。我的查詢工作正常。 – user1482953 2012-07-06 14:22:42