Similar to excel function;
create function dbo.fn_networkdays
(
@Startdate date
, @Enddate date
, @BankHol int = 0
)
RETURNS INT
AS
BEGIN
declare @days int = 0
while @enddate >= @startdate
begin
if datename(dw,@enddate) not in ('Saturday','Sunday')
set @days = @days + 1
set @enddate = dateadd(d, -1, @enddate)
end
RETURN @days - @BankHol
END
running the test over Easter period (2 holidays, plus sat / sun), it gives;
select dbo.fn_networkdays('2013-03-28', '2013-04-03', 2)
3