You can use a Calendar table and store all business days in it.
Or, you can use the following simple formula to calculate number of business days between two dates. The formula assumes that Saturday and Sunday are not business days. It assumes that two given dates are business days.
All it does, is calculates the normal difference in days and then subtracts 2 (non-business) days from this result for each beginning of the week.
Example 1
DECLARE @Date0 date = '2016-04-07'; -- Thursday
DECLARE @Date1 date = '2016-04-08'; -- Friday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Result
BusinessDays
1
Example 2
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-11'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Result
BusinessDays
1
Example 3
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-18'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Result
BusinessDays
6
Your query would look like this:
SELECT COUNT(*)
FROM Orders
WHERE
DATEDIFF(day, COALESCE(Date1, Date2), Date0) -
DATEDIFF(week, COALESCE(Date1, Date2), Date0) * 2 <= 1
;