Jag provade den här logiken med flera kantfall och det verkar fungera.
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
Du kan ändra CASE-satserna beroende på hur du vill hantera fall där start- eller slutdatumet är i en helg. I mitt fall tar jag inte med helgen om start- eller slutdatumet är en lördag eller söndag.