【问题标题】:SQL Monitoring Increase and decrease for the Quantity of a ProductSQL监控产品数量的增减
【发布时间】:2017-04-18 17:08:39
【问题描述】:

我正在 VB.net 中编写一个简单的应用程序,但我被困在一条 SQL 语句中。假设我有以下表格和一些示例数据

产品表attributesProductIDProductNameCategoryIDUnitPriceQuantityOnhand

ProductId  Name  UnitPrice  QTYonaHand
001        XYZ   3          25

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

BillDetails 表,属性为 BillNoProductidQtyPrice - 代表从供应商处购买并将增加数量

  BillNo   ProductId    Qty     Price
    01      001          36      3

InvoiceDetails Table 属性为 InvoiceId ,Productid , Qty , Price - 代表对客户的销售,数量将减少。

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

我的目标是编写一个返回表的 SQL 语句

产品详情

例如产品 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

提前致谢!

【问题讨论】:

  • 请显示 i) 输入表的样本数据,ii) 您到目前为止尝试过的内容。
  • 您如何知道账单和发票的日期?它们不在您的输入中,而是在您的输出中。
  • InvoiceDetails 表与 Invoice 表 有关系,该表具有 'InvoiceNo' 、 'InvoiceDate' 、 'CustomerId' 等属性,我将在那里获得 invoiceDate。同样的方式 BillDetails Table 与 BillsTable 有关系,它具有 'BillNo' 、 'BillDate' 、 'VendorId' 等属性

标签: sql sql-server


【解决方案1】:

这已经成功了

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

但是如何添加运行余额计算列

【讨论】:

    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多