77 lines
6.5 KiB
Transact-SQL
77 lines
6.5 KiB
Transact-SQL
Use [EnVisage]
|
||
|
||
IF EXISTS(SELECT * FROM sys.views WHERE Name = N'VW_ResourceWorkingDays')
|
||
BEGIN
|
||
DROP VIEW VW_ResourceWorkingDays
|
||
PRINT 'VW_ResourceWorkingDays dropped'
|
||
END
|
||
GO
|
||
|
||
IF EXISTS(SELECT * FROM sys.views WHERE Name = N'VW_Holidays2Resources')
|
||
BEGIN
|
||
DROP VIEW VW_Holidays2Resources
|
||
PRINT 'VW_Holidays2Resources dropped'
|
||
END
|
||
GO
|
||
|
||
CREATE VIEW [dbo].[VW_Holidays2Resources] AS
|
||
-- Holidays for specified resources, Teams and ECs
|
||
(SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
|
||
PR.TeamStartDate, PR.TeamEndDate
|
||
FROM Holiday H
|
||
LEFT JOIN Holiday2Team H2T ON (H2T.HolidayId = H.Id)
|
||
LEFT JOIN Holiday2ExpenditureCategory H2E ON (H2E.HolidayId = H.Id)
|
||
LEFT JOIN Holiday2PeopleResource H2P ON (H2P.HolidayId = H.Id)
|
||
LEFT JOIN VW_TeamResource PR ON
|
||
(PR.TeamId = H2T.TeamId) OR (PR.ExpenditureCategoryId = H2E.ExpenditureCategoryId) OR (H2P.ResourceId = PR.Id)
|
||
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 1) AND (H.WorkingDays = 0)
|
||
|
||
UNION
|
||
|
||
-- Holidays for all company resources
|
||
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
|
||
PR.TeamStartDate, PR.TeamEndDate
|
||
FROM Holiday H
|
||
LEFT JOIN VW_TeamResource PR ON (1 = 1)
|
||
WHERE (H.CompanyImpact = 1) AND (H.WorkingDays = 0)
|
||
|
||
UNION
|
||
|
||
-- Holidays for all resources, except specified resources, teams and ECs
|
||
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
|
||
PR.TeamStartDate, PR.TeamEndDate
|
||
FROM Holiday H
|
||
LEFT JOIN VW_TeamResource PR ON (1 = 1)
|
||
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 0) AND (H.WorkingDays = 0)
|
||
)
|
||
|
||
EXCEPT
|
||
|
||
-- Exclude excluded Teams, ECs and Resources
|
||
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
|
||
PR.TeamStartDate, PR.TeamEndDate
|
||
FROM Holiday H
|
||
LEFT JOIN Holiday2Team H2T ON (H2T.HolidayId = H.Id)
|
||
LEFT JOIN Holiday2ExpenditureCategory H2E ON (H2E.HolidayId = H.Id)
|
||
LEFT JOIN Holiday2PeopleResource H2P ON (H2P.HolidayId = H.Id)
|
||
LEFT JOIN VW_TeamResource PR ON
|
||
(PR.TeamId = H2T.TeamId) OR (PR.ExpenditureCategoryId = H2E.ExpenditureCategoryId) OR (H2P.ResourceId = PR.Id)
|
||
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 0) AND (H.WorkingDays = 0)
|
||
GO
|
||
|
||
CREATE VIEW [dbo].[VW_ResourceWorkingDays] AS
|
||
select H2R.ResourceId, HA.WeekEndingDate, H2R.ExpenditureCategoryId, H2R.TeamId, WW.WorkDaysAmount,
|
||
MIN(CAST((HA.Sunday & WW.Sunday) as smallint)) AS Sunday,
|
||
MIN(CAST((HA.Monday & WW.Monday) as smallint)) AS Monday,
|
||
MIN(CAST((HA.Tuesday & WW.Tuesday) as smallint)) AS Tuesday,
|
||
MIN(CAST((HA.Wednesday & WW.Wednesday) as smallint)) AS Wednesday,
|
||
MIN(CAST((HA.Thursday & WW.Thursday) as smallint)) AS Thursday,
|
||
MIN(CAST((HA.Friday & WW.Friday) as smallint)) AS Friday,
|
||
MIN(CAST((HA.Saturday & WW.Saturday) as smallint)) AS Saturday
|
||
from VW_Holidays2Resources H2R
|
||
INNER JOIN HolidayAllocation HA ON (HA.HolidayGroupId = H2R.HolidayGroupId) AND
|
||
(HA.WeekEndingDate >= H2R.TeamStartDate) AND ((HA.WeekEndingDate <= H2R.TeamEndDate) OR (H2R.TeamEndDate IS NULL))
|
||
INNER JOIN VW_WorkWeek WW ON (WW.Id = H2R.WorkWeekId)
|
||
GROUP BY H2R.ResourceId, HA.WeekEndingDate, H2R.ExpenditureCategoryId, H2R.TeamId, WW.WorkDaysAmount
|
||
GO
|