簡體   English   中英

訪問SQL查詢內部聯接並以null求和

[英]Access SQL query inner join & sum with null

表格:項目,采購,報價行。

項目具有字段ItemID,ItemName,IsActive
購買具有字段ItemID,QtyPurchased
QuoteLines具有字段ItemID,NegQty,IsSold

目標是選擇IsActive = yes的所有ItemID,然后對所有QtyPurchased求和,並僅減去IsSold = yes的NeqQty。

我努力了:

SELECT Items.ItemID, Items.ItemName, IIF(NegQTY=NULL, SUM(QtyPurchased), SUM(NegQty+PurchasedQty)) AS Inv_Qty
FROM Purchases, Items, QuoteLines
WHERE Purchases.ItemID=Items.ItemID AND Items.ItemID=QuoteLines.ItemID
GROUP BY Items.ItemID, Items.ItemName;

結果導致“您的查詢不包含指定的表達式IIF(NegQTY = NULL,SUM(QtyPurchased),SUM(NegQty + PurchasedQty))”

我還嘗試了tblItems和tblPurchases之間的內部聯接以獲取PurchasedQty,然后在tblItems和tblQuoteLines之間進行第二次內部聯接以僅獲取SoldQty,然后在PurchasedQty和SoldQty之間進行左內部聯接以獲取InventoryQty,但這為在PurchasedQty和SoldQty中都存在的項目,但是對於僅在PurchasedQty中存在的項目,它返回NULL。

考慮使用保存的查詢來計算購買的總單位和銷售的總單位,然后在查詢中使用那些保存的查詢來計算當前庫存。

購買的總單位

創建一個名為[TotalPurchasedByItemID]的保存的查詢

Purchased.png

SELECT 
    Items.ItemID, 
    Sum(Purchases.QtyPurchased) AS SumOfQtyPurchased
FROM 
    Items 
    INNER JOIN 
    Purchases 
        ON Items.ItemID = Purchases.ItemID
WHERE (((Items.IsActive)=True))
GROUP BY Items.ItemID;

售出總單位

創建一個名為[TotalSoldByItemID]的保存的查詢

Sold.png

SELECT 
    Items.ItemID, 
    Sum(QuoteLines.NegQty) AS SumOfNegQty
FROM 
    Items 
    INNER JOIN 
    QuoteLines 
        ON Items.ItemID = QuoteLines.ItemID
WHERE (((Items.IsActive)=True) AND ((QuoteLines.IsSold)=True))
GROUP BY Items.ItemID;

當前庫存

CurrentInventory

SELECT 
    Items.ItemID, 
    Items.ItemName, 
    Nz([SumOfQtyPurchased],0)-Nz([SumOfNegQty],0) AS Inv_Qty
FROM 
    (
        Items 
        LEFT JOIN 
        TotalPurchasedByItemID 
            ON Items.ItemID = TotalPurchasedByItemID.ItemID
    ) 
    LEFT JOIN 
    TotalSoldByItemID 
        ON Items.ItemID = TotalSoldByItemID.ItemID
WHERE (((Items.IsActive)=True));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM