2011-12-03 101 views
0

我正在嘗試創建Office Access程序來監視我的部門。如果Sum()函數有一行,查詢不會顯示結果

我有一張表,其中包含我欠某人名爲tbl_depts的多少錢。

我有另一張表,其中包含名爲tbl_payments的付款。

這裏是我的語法:

SELECT DISTINCTROW 
    tbl_depts.who, 
    tbl_depts.dept, 
    Sum(tbl_payments.payment) AS [Paid], 
    (tbl_depts.dept - [Paid]) AS remaining 
FROM tbl_depts INNER JOIN tbl_payments ON tbl_depts.[ID] = tbl_payments.[dept_ID] 
GROUP BY tbl_depts.who; 

但是有一個問題。如果部門只有一筆付款,則查詢顯示爲空。但是如果該部門有兩筆付款,這個查詢就完美了。

我該怎麼辦?

+1

這是一個內部聯接,所以我希望這是你有一個錯字,並沒有行加入可言。你能顯示確切的測試數據嗎? – Hogan

回答

0

怎麼樣使用使用左側INNER JOIN確保DEPT_ID兩個表時存在JOIN

SELECT DISTINCTROW 
    tbl_depts.who, 
    tbl_depts.dept, 
    Sum(tbl_payments.payment) AS [Paid], 
    (tbl_depts.dept - [Paid]) AS remaining 
FROM tbl_depts LEFT JOIN tbl_payments 
    ON tbl_depts.[ID] = tbl_payments.[dept_ID] 
GROUP BY tbl_depts.who, tbl_depts.dept, (tbl_depts.dept - [Paid]); 
0

您的查詢上面不會運行 - 分組是錯誤的。 這工作:

SELECT tbl_depts.ID, tbl_depts.who, tbl_depts.dept, Sum(tbl_payments.payment) AS paid, [dept]-[payment] AS remaining 
FROM tbl_payments INNER JOIN tbl_depts ON tbl_payments.dept_ID = tbl_depts.ID 
GROUP BY tbl_depts.ID, tbl_depts.who, tbl_depts.dept, [dept]-[payment];