Vyzkoušel jsem tuto logiku s několika okrajovými případy a zdá se, že to funguje.
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
Příkazy CASE můžete změnit v závislosti na tom, jak chcete zacházet s případy, kdy počáteční nebo koncové datum je víkend. V mém případě nezahrnuji víkend, pokud je počátečním nebo koncovým datem sobota nebo neděle.