Если вы используете результаты запроса в SSRS, лучше просто отправить данные без привязки.Вы можете добавить матрицу в свой отчет, чтобы сделать работу поворота за вас.
В вашем запросе было две проблемы,
- Он просто подсчитывал, сколько записей продаж он нашел
- Поскольку вашей основной таблицей являются продажи, а вы выполняете внутреннее объединение с сотрудниками, будут отображаться только сотрудники с записями продаж.
Ниже приведены некоторые примеры данных, которые я использовал, и запрос в концечтобы получить желаемые результаты.
DECLARE @employees TABLE(EmployeeID int, EmployeeName varchar(64))
DECLARE @products TABLE(ProductID int, ProductName varchar(64))
DECLARE @sales TABLE(EmployeeID int, ProductID int, Qty int, SaleDate date)
INSERT INTO @employees VALUES (1, 'Dave'), (2,'Bob'), (3, 'Mary')
INSERT INTO @products VALUES (1, 'Cars'), (2, 'Bikes'), (3, 'Trucks')
INSERT INTO @sales VALUES
(1,1,5, '2019-04-30'), (1,1,10, '2019-04-30'), (1,2,11, '2019-04-29'),
(2,1,12, '2019-04-28'), (2,2,13, '2019-04-30'), (2,3,14, '2019-04-29')
SELECT
e.EmployeeName, p.ProductName, SUM(Qty) AS Qty
FROM @employees e
LEFT JOIN @sales s on e.EmployeeID = s.EmployeeID
LEFT JOIN @products p on s.ProductID = p.ProductID
group by e.EmployeeName, p.ProductName
order by e.EmployeeName
На этот раз мы начнем с сотрудников и LEFT JOIN
с других таблиц.Это гарантирует, что все сотрудники будут отображаться.
На основе приведенных выше примеров данных:
Если вы используете это в качестве набора данныхВ запросе в SSRS вы можете затем добавить матрицу с Группой строк для сотрудника и Группой столбцов для продукта, значения «ячейки» будут =SUM(Fields!Qty.Value)
. Это даст вам отчет, который выглядит следующим образом ..(простите за форматирование, это буквально 2 минуты работы)