Ms-Access

匯總 2 個表的 MS Access 查詢不會產生預期的輸出

  • June 7, 2018

我無法在 MS Access 2016 中成功創建一個查詢,該查詢正確地匯總了 2 個具有相似但不完全相同欄位的表中的數據。

我有一個水果市場。我每季買一次每種水果。我每個季節都會多次處理壞水果。我分別跟踪壞果的購買和處置。

我希望創建一個查詢來總結每年和水果的淨水果量(購買 - 壞)。

購買水果表:

ID  CYear   Fruit   Purchased
3   2017    Apple   50
4   2018    Apple   30
5   2017    Pear    50
6   2018    Pear    60

壞果表

ID  CYear   CMonth  Fruit   Bad
2   2017    11      Apple   3
3   2017    12      Apple   20
4   2017    8       Pear    15
5   2018    2       Apple   10

這是我想要的查詢輸出:

ID  CYear   Fruit   Purchased   Bad Net
1   2017    Apple   50          23  27
2   2017    Pear    50          15  35
3   2018    Apple   30          10  20
4   2018    Pear    60          0   60

“Net”欄位是根據“Purchased - Bad”計算得出的。

我無法創建與所需輸出匹配的查詢或聯合。最令人費解的是,因為2018年沒有“0”壞梨的記錄,查詢甚至沒有選擇2018年梨的採購。

創建計算每年壞果數量的查詢並將其保存並分配名稱

$$ Bad Fruit Year $$:

SELECT CYear, Fruit, SUM(Bad) AS Bad
FROM [Bad Fruit]
GROUP BY CYear, Fruit;

然後創建查詢獲取您需要的數據:

SELECT p.ID, p.CYear, p.Fruit, p.Purchased, NZ(b.Bad,0) AS Bad, (p.Purchased-NZ(b.Bad,0)) AS Net
FROM [Purchased Fruit] As p
LEFT JOIN [Bad Fruit Year] As b ON p.CYear=b.CYear AND p.Fruit=b.Fruit;

結果,您將有 2 個查詢(要清除數據庫視窗的查詢選項卡,您可以隱藏第一個查詢)。第二個給出你需要的結果,它會在打開時自動呼叫第一個(你不需要呼叫/打開它)。

如果您願意,您可以將這些查詢合併為一個:

SELECT p.ID, p.CYear, p.Fruit, p.Purchased, NZ(b.Bad,0) AS Bad, (p.Purchased-NZ(b.Bad,0)) AS Net
FROM [Purchased Fruit] As p
LEFT JOIN ( SELECT CYear, Fruit, SUM(Bad) AS Bad
           FROM [Bad Fruit]
           GROUP BY CYear, Fruit) AS b ON p.CYear=b.CYear AND p.Fruit=b.Fruit;

但是,如果您在創建和儲存後打開它進行查看/編輯,它的文本可能會被 MS Access 損壞(問題是舊的並且仍然無法修復)。

PS。我認為沒有水果存在的情況

$$ Bad Fruit $$一年的表,而缺席$$ Purchased Fruit $$同年。

引用自:https://dba.stackexchange.com/questions/208957