В моей базе данных 3 таблицы, как показано ниже:
Таблица Sman
smanID | smanName | smanTeam
-------------------------------
0210 | John | Direct
0211 | Stacy | Indirect
0212 | Bob | Indirect
Таблица SalesTarget
Period | smanID | Target
-------------------------------
201901 | 0210 | 200000
201902 | 0210 | 200000
201901 | 0211 | 200000
201902 | 0211 | 200000
201901 | 0212 | 200000
201902 | 0212 | 200000
Таблица продаж
Period | smanID | SalesID | Amount
------------------------------------------
201901 | 0210 | abc121 | 20000
201901 | 0210 | abc122 | 80000
201901 | 0211 | abc123 | 150000
201901 | 0212 | abc124 | 30000
201902 | 0210 | abc125 | 35000
201902 | 0211 | abc126 | 80000
201902 | 0212 | abc127 | 22000
Я хотел бы получить общую цель, общий объем продаж и процент продаж по сравнению с целью, сгенерированной каждой командой продаж.
Я работаю на SQL Server 2012.
Вот чтоЯ пытался, но мне не удалось получить правильный результат, за исключением столбца TotalSales:
SELECT C.smanTeam,
COALESCE(SUM(A.Target), 0) AS TotalTarget,
COALESCE(ROUND((SUM(B.[Amount)), 2), 0) AS TotalSales,
COALESCE(ROUND((((SUM(B.[Amount])) / COALESCE(SUM(A.SalesTarget), '0')) * 100), 0), 0) AS TotalPercentage
FROM Sman_SalesTarget_Current A
LEFT JOIN [SALESORDER] B ON B.smanID = A.smanID
AND B.Period = A.Period
LEFT JOIN Sman C ON B.smanID = C.SmanID
WHERE B.Period BETWEEN '201901' AND '201902'
GROUP BY C.smanTeam
ORDER BY C.smanTeam;
желаемый результат должен быть примерно таким:
salesTeam | TotalTarget | TotalSales | TotalPercentage
---------------------------------------------------------
Direct | 400000 | 135000 | 33
Indirect | 800000 | 282000 | 35
кто-нибудь может, вероятно,указать, где я ошибся в своем запросе?Я думал об утверждении соединения, но все еще не могу его исправить.