【问题标题】:How to get Product wise stock using sql server query如何使用 sql server 查询获取产品明智的库存
【发布时间】:2016-02-15 23:57:55
【问题描述】:

我正在处理一个有流动表的 sql 查询

tblProducts (ProductID,Name,Code,Features)
tblStock    (StockID,ProductID,Stock,Date)
tblOrderDetails(DetailID,ProductID,ProductQuantity,Date)

用户在其库存到达时输入任何产品的库存。当用户购买任何数量的任何产品时,其详细信息将存储在 tblOrderDetails 表中。我希望按 ProductID 的总库存产品组以及每个产品组的订单明智的产品。为此,我使用了以下查询;-

SELECT
    tblStock.ProductID,
    ISNULL(SUM(tblOrderDetails.Qty), 0) AS used,
    SUM(tblStock.Stock) AS st
FROM tblStock
INNER JOIN tblProducts
    ON tblProducts.ProductID = tblStock.ProductId
LEFT OUTER JOIN tblOrderDetails
    ON tblOrderDetails.ProductID = tblStock.ProductId
GROUP BY tblStock.ProductID

在订单详细信息表中,我有两个产品 ID 的两个订单。上面的查询只显示了一个产品的订购产品的总和,而不是第二个产品的总和。如何明智地获得适当订购的产品 ProductID 和总库存也是明智的 ProductID .. 我怎样才能做到这一点?

【问题讨论】:

  • 什么是明智的产品明智的股票明智的组合?显示数据以及您希望从该数据中得到什么。

标签: sql-server


【解决方案1】:

您不能仅使用产品 ID 连接表格,因为同一产品有多个订单和库存会使您的结果成倍增加,因此您必须执行以下操作:

; with 
O as (select ProductId, SUM(Qty) AS used from tblOrderDetails group by ProductId),
S as (select ProductId, SUM(Stock) as st from tblStock group by ProductId)

SELECT
    P.ProductID,
    ISNULL(O.used), 0) AS used,
    S.st
FROM tblProducts P
LEFT OUTER JOIN O on O.ProductId = P.ProductId
LEFT OUTER JOIN S on S.ProductID = P.ProductId

【讨论】:

  • 它对我来说效果很好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2022-01-04
  • 2016-09-05
  • 2016-12-12
相关资源
最近更新 更多