Ich habe diese Logik mit mehreren Grenzfällen ausprobiert und sie scheint zu funktionieren.
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
Sie können die CASE-Anweisungen ändern, je nachdem, wie Sie Fälle behandeln möchten, bei denen das Start- oder Enddatum auf ein Wochenende fällt. In meinem Fall beziehe ich das Wochenende nicht mit ein, wenn das Start- oder Enddatum ein Samstag oder Sonntag ist.