2017-04-18 111 views
0

我正在VB.net中编写一个简单的应用程序,并且我被困在一个SQL语句中。比方说,我有一些样本数据SQL监视增加和减少产品数量

产品表attributesProductIDProductNameCategoryIDUnitPrice在下表中,QuantityOnhand

ProductId Name UnitPrice QTYonaHand 
001  XYZ 3   25 

。我想跟踪我拥有的物品数量的增加和减少。这些是使产品的QuantityOnhand增加或减少的一些交易。

BillDetails表具有属性BillNoProductidQtyPrice - 从供应商表示购买,并会增加量

BillNo ProductId Qty  Price 
    01  001   36  3 

InvoiceDetails表具有属性InvoiceIdProductidQtyPrice - 表示销售客户,并会减少数量。

InvoiceNo  ProductId  Qty Price 
    10    001   6  4 
    12    001   5  4.5 

我的目标是编写返回表

产品详情

对于示例产品XYZ

Type  Date   Ref  Qty  OnHand 
Bill  4/15/2017 01  36   36 
Invoice 4/16/2017 10  -6   30 
Invoice 4/17/2017 12  -5   25 

在此先感谢SQL语句!

+0

请告诉我)输入表的样本数据,II)你有什么迄今为止尝试过。 –

+0

你怎么知道账单和发票的日期?它们不在您的输入中,而是在您的输出中。 – BeanFrog

+0

InvoiceDetails表与**发票表**有关系,这些表具有'发票号','发票日期','客户ID'等属性,我将在那里获得发票日期。 BillDetails表与Bill Bill,'BillDate','VendorId'具有关系** ** BillsTable **, –

回答

0

这做的伎俩

Select BILLDATE AS DATE, 'BILL' as Type, B.BILLno as Ref, BD.QTY as QTY from Bill B 
inner join BILLDETAILS BD 
on 
B.BILLno = BD.[BILLno] 
where BD.ProductId = 001 

UNION ALL 

Select [Invoice Date] AS DATE , 'Invoice' as Type, S.[invoice no] as Ref, D.QTY * -1 as QTY from SALESINVOICE S 
inner join SalesInvoiceDetails D 
on 
S.[Invoice No] = D.[Invoice NO] 
where d.ProductId = 001 
ORDER BY DATE ASC 

enter image description here

但我怎么能添加一个运行平衡计算列