Изпробвах тази логика с няколко крайни случая и изглежда работи.
SELECT DATEDIFF(d, @dFrom, @dTo)/7+1
+ CASE WHEN DATEPART(dw,@dFrom) IN (1,7) THEN -1 ELSE 0 END
+ CASE WHEN DATEPART(dw,@dTo) IN (1,7) THEN -1 ELSE 0 END
Можете да промените операторите CASE в зависимост от това как искате да обработвате случаи, когато началната или крайната дата е през уикенда. В моя случай не включвам уикенда, ако началната или крайната дата е събота или неделя.