Is there a way to get this to work as a function?
Currently returns error "Select statements included within a function cannot return data to a client"
CREATE FUNCTION [dbo].[WorkDays](@DateFrom datetime,@DateTo datetime) RETURNS int AS BEGIN --Working time DECLARE @WTFrom TIME = '8:00AM'; DECLARE @WTTo TIME = '5:00PM'; DECLARE @minCount BIGINT --Date ranges IF (DATEDIFF(HOUR, @DateFrom, @DateTo) > 12) BEGIN WITH CTE AS ( SELECT @DateFrom AS DateVal UNION ALL SELECT DATEADD(HOUR, 1, DateVal) FROM CTE WHERE DateVal < DATEADD(HOUR, -1,@DateTo) ) SELECT DATEDIFF(minute, MIN(CTE.DateVal), MAX(CTE.DateVal)) FROM CTE WHERE (CAST(CTE.DateVal AS time) > @WTFrom AND CAST(CTE.DateVal AS time) < @WTTo) AND DATEPART(dw, CTE.DateVal) NOT IN (1, 7) AND NOT EXISTS (SELECT * FROM Holiday AS H WHERE H.holiday = CTE.DateVal) OPTION (MAXRECURSION 0); END; ELSE BEGIN WITH CTE AS ( SELECT @DateFrom AS DateVal UNION ALL SELECT DATEADD(MINUTE, 1, DateVal) FROM CTE WHERE DateVal < DATEADD(MINUTE, -1,@DateTo) ) SELECT DATEDIFF(minute, MIN(CTE.DateVal), MAX(CTE.DateVal)) FROM CTE WHERE (CAST(CTE.DateVal AS time) > @WTFrom AND CAST(CTE.DateVal AS time) < @WTTo) AND DATEPART(dw, CTE.DateVal) NOT IN (1, 7) AND NOT EXISTS (SELECT * FROM Holiday AS H WHERE H.holiday = CTE.DateVal) OPTION (MAXRECURSION 0); END; END
Thanks for your help.