Похоже, что соединение извлекает более 1 подходящей строки из таблицы FarmGroups, что приводит к перекрестному продукту.
Я полагаю, что это не должно, но теперь у вас есть несколько записей для одной и той же комбинации ReapingCode / Season.
Может быть, вы хотите очистить свои данные и добавить UNIQUE KEY(REAPING_GROUP_CODE, CROP_SEASON)
, чтобы избежать таких дубликатов в будущем. Если я правильно понимаю, один REAPING_GROUP_CODE в указанном c СЕЗОН может быть отнесен только к одному ASSN.
Если это невозможно, вы все равно можете сделать это, чтобы исключить дублирование во время запроса, но оно не будет работать так же хорошо, как очистка + изменение схемы:
With Summary as (
Select a.ASSN As Association
,SUM(tonnage_adjusted) as TotalTonnage
,SUM(case when remarks = '' THEN tonnage_adjusted ELSE NULL END) as Monitored
,SUM(case when remarks = 'NO_TICKET' THEN tonnage_adjusted ELSE NULL END) as NotMonitored
FROM DeliveryTons d
/* NOTE the SELECT DISTINCT subquery here */
INNER JOIN
(SELECT DISTINCT
ASSN,REAPING_CODE_GROUP,CROP_SEASON FROM FarmerGroups
WHERE CROP_SEASON = 4
) a
ON d.reaping_code = a.REAPING_GROUP_CODE
AND d.crop_season = a.CROP_SEASON
WHERE reaping_code IS NOT NULL
Group By a.ASSN
)
SELECT Association
,TotalTonnage
, COALESCE(Monitored,0) As Monitored
, COALESCE(NotMonitored,0)As NotMonitored
, COALESCE(((Monitored/TotalTonnage) * 100),0) as pct_Monitored
FROM Summary
Order by Association,TotalTonnage