2017-02-22 46 views
-2

我需要幫助。我有下面的代碼工作正常,但沒有達到我的目標。我想要在減法之前的每一個計算值的列「account_title」,它應該最終給我減去值的差異。感謝預期。帶SELECT,LEFT JOIN和WHERE子句的算術運算符

SELECT 
(
    SELECT SUM(amount) 
    FROM mainaccount_a_2017 
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_a_2017.joint_account_number) 
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type) 
    WHERE a_l_code = 'FA' AND dr_cr_action = 'DR' 
) 
- 
(
    SELECT SUM(amount) 
    FROM mainaccount_b_2017 
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_b_2017.joint_account_number) 
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type) 
    WHERE a_l_code = 'FA' AND dr_cr_action = 'CR' 
) 
+1

爲什麼你默默的看着我們?在這裏不適合在全部大寫中輸入你的問題。它使文本更難閱讀,這是粗魯的,它不會幫助你更快。查看主頁面的問題列表 - 您除了您的所有CAPS外還看到了多少個問題?答案:沒有,因爲這樣做不合適。請住手。 –

+0

帳戶標題從哪裏來?您沒有按帳戶對查詢進行分組。 – Barmar

+2

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

回答

0

將子查詢更改爲account_title,然後加入它們。

SELECT debits.account_title, debits.total - credits.total AS net_reduction 
FROM (
    SELECT mainaccount_a_2017.account_title, SUM(amount) AS total 
    FROM mainaccount_a_2017 
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_a_2017.joint_account_number) 
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type) 
    WHERE a_l_code = 'FA' AND dr_cr_action = 'DR' 
    GROUP BY mainaccount_a_2017.account_title 
) AS debits 
JOIN (
    SELECT mainaccount_b_2017.account_title, SUM(amount) AS total 
    FROM mainaccount_b_2017 
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_b_2017.joint_account_number) 
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type) 
    WHERE a_l_code = 'FA' AND dr_cr_action = 'CR' 
    GROUP BY mainaccount_b_2017.account_title 
) AS credits ON debits.account_title = credits.account_title 

DEMO

+0

謝謝你,但我得到了關於歧義的錯誤消息'#1052 - 字段列表中的列'account_title'含糊不清。我連接了account_title並翻轉了一些東西。我想,你做的非常接近,我可以感覺到,但我還沒有... –

+0

這意味着你在其他表中有'account_title',所以你需要表前綴。我已經更新了答案來展示這一點。 – Barmar

+0

如果您在其他表格中擁有帳戶標題,那是錯誤的標準化。它應該只在帳戶列表中。 – Barmar