這裏有兩種方法來實現它,具體取決於Account_ID在兩個表中是否都是唯一的。 更快的方式(如果ACCOUNT_ID是唯一的每個表):
SELECT A.*, N16.Amount as Amount_2016
, N17.Amount as Amount_2017
, N18.Amount as Amount_2018
, N19.Amount as Amount_2019
FROM ACCOUNTS A
LEFT JOIN NET_PROCEEDS N16 ON N16.Account_ID = A.Account_ID AND N16.Fiscal_Year = '2016'
LEFT JOIN NET_PROCEEDS N17 ON N17.Account_ID = A.Account_ID AND N17.Fiscal_Year = '2017'
LEFT JOIN NET_PROCEEDS N18 ON N18.Account_ID = A.Account_ID AND N18.Fiscal_Year = '2018'
LEFT JOIN NET_PROCEEDS N19 ON N19.Account_ID = A.Account_ID AND N19.Fiscal_Year = '2019'
的更安全的方式(如果ACCOUNT_ID不是/可能不是唯一的每個表):
SELECT A.*, (SELECT SUM(N16.Amount) FROM NET_PROCEEDS N16 ON N16.Account_ID = A.Account_ID AND N16.Fiscal_Year = '2016') as Amount_2016
, (SELECT SUM(N17.Amount) FROM NET_PROCEEDS N17 ON N17.Account_ID = A.Account_ID AND N17.Fiscal_Year = '2017') as Amount_2017
, (SELECT SUM(N18.Amount) FROM NET_PROCEEDS N18 ON N18.Account_ID = A.Account_ID AND N18.Fiscal_Year = '2018') as Amount_2018
, (SELECT SUM(N19.Amount) FROM NET_PROCEEDS N19 ON N19.Account_ID = A.Account_ID AND N19.Fiscal_Year = '2019') as Amount_2019
FROM ACCOUNTS A
如果使用第一個當Account_ID不唯一時,它會爲每個Account_ID的重複實例創建多個行,這將與任何SUM或COUNTs等混在一起。
感謝您的支持,但net_proceeds表中可能有很多account_ID。 – Dhenn
嗨,是的,這就是爲什麼你會使用第二個查詢 – tomb