Спасибо всем. Ниже приведен запрос, который наконец заработал.
SELECT
masterlist.Month AS [Month]
,masterlist.LineCode AS [Line Code]
,masterlist.ClassCode AS [Class Code]
,ct.cc_type AS [Class Code Type]
,pop.pop_code AS [Pop Code]
,ah.keycust1 AS [Key Cust1]
,ah.keycust2 AS [KeyCust2 - Territory]
,ah.keycust3 AS [Key cust3]
,ah.sales1 AS [Sales1]
,ah.sales2 AS [Sales2]
,ah.sales3 AS [Sales3]
,SUM(ff2017.[Gross]) AS [2017 Gross]
,SUM (ff2017.QtyShip + ( (ff2017.QtyOrd - ff2017.QtyShip) * 0.25) ) AS [2017 Forecast Qty]
,SUM(ff2018.[Gross]) AS [2018 Gross]
,SUM (ff2018.QtyShip + ( (ff2018.QtyOrd - ff2018.QtyShip) * 0.25) ) AS [2018 Forecast Qty]
,SUM(ff2019.[Gross]) AS [2019 Gross]
,SUM (ff2019.QtyShip + ( (ff2019.QtyOrd - ff2019.QtyShip) * 0.25) ) AS [2019 Forecast Qty]
,SUM(ff2020.[Gross]) AS [2020 Gross]
,SUM (ff2020.QtyShip + ( (ff2020.QtyOrd - ff2020.QtyShip) * 0.25) ) AS [2020 Forecast Qty]
FROM (
SELECT
DISTINCT ff.AccountNumber, MONTH(InvDate) AS Month,LineCode,ClassCode,ff.PartNumber
FROM FrcstFactTbl ff
) AS masterlist
LEFT OUTER JOIN
(
SELECT
AccountNumber
,PartNumber
,Month(InvDate) AS Month
,SUM(GrossSales) AS [Gross]
,SUM (QtyShip) AS [QtyShip]
,SUM(QtyOrd) AS [QtyOrd]
FROM FrcstFactTbl WHERE Year(InvDate)=2017
GROUP BY AccountNumber, PartNumber, Month(InvDate)
) AS ff2017 ON masterlist.Month = ff2017.Month AND masterlist.AccountNumber = ff2017.AccountNumber AND masterlist.PartNumber = ff2017.PartNumber
LEFT OUTER JOIN
(
SELECT
AccountNumber
,PartNumber
,Month(InvDate) AS Month
,SUM(GrossSales) AS [Gross]
,SUM (QtyShip) AS [QtyShip]
,SUM(QtyOrd) AS [QtyOrd]
FROM FrcstFactTbl WHERE Year(InvDate)=2018
GROUP BY AccountNumber, PartNumber, Month(InvDate)
) AS ff2018 ON masterlist.Month = ff2018.Month AND masterlist.AccountNumber = ff2018.AccountNumber AND masterlist.PartNumber = ff2018.PartNumber
LEFT OUTER JOIN
(
SELECT
AccountNumber
,PartNumber
,Month(InvDate) AS Month
,SUM(GrossSales) AS [Gross]
,SUM (QtyShip) AS [QtyShip]
,SUM(QtyOrd) AS [QtyOrd]
FROM FrcstFactTbl WHERE Year(InvDate)=2019
GROUP BY AccountNumber, PartNumber, Month(InvDate)
) AS ff2019 ON masterlist.Month = ff2019.Month AND masterlist.AccountNumber = ff2019.AccountNumber AND masterlist.PartNumber = ff2019.PartNumber
LEFT OUTER JOIN
(
SELECT
AccountNumber
,PartNumber
,Month(InvDate) AS Month
,SUM(GrossSales) AS [Gross]
,SUM (QtyShip) AS [QtyShip]
,SUM(QtyOrd) AS [QtyOrd]
FROM FrcstFactTbl WHERE Year(InvDate)=2020
GROUP BY AccountNumber, PartNumber, Month(InvDate)
) AS ff2020 ON masterlist.Month = ff2020.Month AND masterlist.AccountNumber = ff2020.AccountNumber AND masterlist.PartNumber = ff2020.PartNumber
LEFT OUTER JOIN cc_type_lu ct ON masterlist.ClassCode = ct.class_code
LEFT OUTER JOIN pop_code_lu pop ON masterlist.PartNumber = pop.PartNumber
LEFT OUTER JOIN account_hierarchy_lu ah ON masterlist.AccountNumber = ah.account_number
--ORDER BY masterlist.Month
GROUP BY masterlist.Month
,masterlist.LineCode
,masterlist.ClassCode
,ct.cc_type
,pop.pop_code
,ah.keycust1
,ah.keycust2
,ah.keycust3
,ah.sales1
,ah.sales2
,ah.sales3