如何使用sql server查询获得产品明智的库存

时间:2015-11-14 13:47:00

标签: sql-server

我正在进行sql查询,其中我有fllowing表

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明智..我怎么能实现这一目标?

1 个答案:

答案 0 :(得分: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