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