У меня есть отчет, который определяет сотрудников, которые вступили менее 40 часов на их табелей для конкретной недели:Адаптация SQL для работы над несколькими недель
With Under40s as (
Select Distinct Entry.UUID, Entry.FirstName, Entry.LastName, Team.PersonUnit, Team.TeamName
From Entry as Entry
Inner Join TeamOrganization as Team on Team.PersonUUID = Entry.UUID and @EnteredDate between Team.PeriodBeginDate and Team.PeriodEndDate
Where
(
Select sum(Entry2.Hours) From Entry as Entry2
Where Entry2.UUID = Entry.UUID and Entry2.Date Between @StartDate and @EndDate
) < 40
Or not exists
(
Select 1 From Entry as Entry2
Where Entry2.UUID = Entry.UUID and Entry2.Date Between @StartDate and @EndDate
)
)
Select distinct Under40s.UUID, Under40s.FirstName, Under40s.LastName, Under40s.PersonUnit, Under40s.TeamName, Case
When Sum(Entry.Hours) is null then 0
Else Sum(Entry.Hours)
End as TotalHours
From Under40s
Left Join Entry as Entry on Entry.UUID = Under40s.UUID and Entry.Date Between @StartDate and @EndDate
Where Under40s.PersonUnit in (@PersonUnit) and Under40s.TeamName in (@Teams)
Group By Under40s.UUID, Under40s.FirstName, Under40s.LastName, Under40s.PersonUnit, Under40s.TeamName
Order By Under40s.LastName, Under40s.FirstName
Теперь клиент хочет, чтобы иметь возможность ввести дату диапазон более чем на неделю. Я думаю, что они хотят видеть каждую неделю в пределах этого диапазона дат, который сообщает менее 40 часов. Я не уверен, как, или если, я могу изменить SQL для доставки такого отчета. Может ли кто-нибудь дать мне подсказку?
Спасибо!
Вы используете службы отчетов для отображения результатов этого cte? – JsonStatham
@SelectDistinct: Да, я. –