Может кто знает как написать его без Group By?
Group By этот делает расчеты не совсем правильными.
(Тестирование подтвердило это), поэтому велели избавиться от Group By; a я не знаю как -так чтобы не выдавало ошибку
![sad & cry :sadcry:](./images/smilies/cry.gif)
![sad & cry :sadcry:](./images/smilies/cry.gif)
DECLARE @MonthBOP date = '07-01-2017'
DECLARE @MonthEOP date = '02-28-2018'
DECLARE @GLRegionsWHID int = -1
SELECT
e.[GLRegion]
,e.[GLRegionWHID]
,e.[GLProgram]
,e.[GLProgramWHID]
,e.[DOLStatus]
,e.[DOLStatusWHID]
,e.[TerminationType]
,e.[TerminationReason]
,SUM(IIF((e.[DateHired] <= @MonthBOP) AND
(e.[DateTerminated] >= @MonthBOP), 1, 0)) AS CountEmployeesBOP]
,SUM(IIF((e.[DateHired] <= @MonthEOP) AND
(e.[DateTerminated] >= @MonthEOP), 1, 0)) AS [CountEmployeesEOP]
,SUM(IIF(e.[DateTerminated] BETWEEN @MonthBOP AND @MonthEOP, 1, 0))
AS [CountTerminations]
FROM
[Reports].[vPaycomEmployee] e
WHERE
((e.[DateHired] <= @MonthEOP) OR
(e.[DateTerminated] > @MonthBOP)) AND
((e.[GLRegionWHID] IN (@GLRegionsWHID)) OR
(-1 IN (@GLRegionsWHID)))
GROUP BY
e.[GLRegion]
,e.[GLRegionWHID]
,e.[GLProgram]
,e.[GLProgramWHID]
,e.[DOLStatus]
,e.[DOLStatusWHID]
,e.[TerminationType]
,e.[TerminationReason]
HAVING
(SUM(IIF((e.[DateHired] <= @MonthBOP) AND
(e.[DateTerminated] >= @MonthBOP), 1, 0)) > 0)