Я пытаюсь создать отчет SSRS, в котором будут отображаться все расписания на человека за отчетный период (месяц) на одной странице. Тем не менее, я изо всех сил пытаюсь понять, как результат должен быть сгруппирован. Пока все, что я, кажется, могу сделать, это получить одну строку для каждого указанного пользователя на странице.
Мой T-SQL выглядит так:
SELECT tblADSI.DisplayName AS FullName,
ds.[Date of Work],
ds.Hours,
ds.[Description of Work],
ds.Mileage,
ds.Subsistence,
ds.[Activity Code] AS CompanyRef,
c.[Cost Center] AS DiaryClient,
r.Role,
c.Description AS Project,
ds.[Accounting Period],
ds.[Rechargeable Items]
FROM [Diary Sheets] ds
LEFT JOIN Commissions c on c.[Commission Code] = ds.[Commission Code]
LEFT JOIN dbo.Roles r on r.Commission = ds.[Commission Code] and r.EmployeeID = ds.EmployeeID
LEFT JOIN [Accounting Period] ap ON ap.ID = ds.[Accounting Period ID]
LEFT JOIN (SELECT displayName,
EmployeeID FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''LDAP://example.domaincontroller.com/OU=Unit1,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
UNION
SELECT displayName,
EmployeeID
FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''example.domaincontroller.com/OU=Unit2,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
) AS tblADSI
ON tblADSI.EmployeeID = ds.employeeID
WHERE c.[Commission Code] = 'Example Commission'
AND ap.[Accounting Period] = 'Febuary 2015'
ORDER BY FullName, ds.[Date of Work], ds.[Activity Code]
Пример вывода из SQL будет.
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
Jane Doe 01/02/2015 5
Jane Doe 02/02/2015 5
Mike Smith 01/02/2015 8
Mike Smith 02/02/2015 9
Итак, используя приведенный выше SQL в качестве моего примера, я построил отчет, который должен отображать на странице каждого пользователя (на основе параметра комиссии, установленного пользователями) в пределах определенной комиссии. Однако все, что, кажется, происходит в отчете, это то, что он показывает одну строку (самую последнюю запись за отчетный период за февраль) и ничего более. Например:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
Jane Doe 01/02/2015 5
Mike Smith 01/02/2015 8
На самом деле мне нужно, чтобы он отображал все листы дневника за отчетный период для каждого пользователя, поэтому в отчете на примере Джона Смита это будет выглядеть так:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
И так далее и тому подобное для каждого второго пользователя на новой странице.
Кто-нибудь знает, как я могу этого добиться? Я изучил и попробовал некоторую группировку SSRS (которая, как я подозреваю, является решением), но я совершенно в растерянности. Какой бы тип группировки я ни пробовал, всегда получается одно и то же.
Я пишу SQL в течение нескольких лет, но я относительно новичок в SSRS, и мои знания SSRS полностью самообучены, поэтому некоторые из моих терминов/форматирования, вероятно, неверны.