J'ai essayé cette logique avec plusieurs cas extrêmes et cela semble fonctionner.
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
Vous pouvez modifier les instructions CASE en fonction de la façon dont vous souhaitez gérer les cas où la date de début ou de fin se situe dans un week-end. Dans mon cas, je n'inclus pas le week-end si la date de début ou de fin est un samedi ou un dimanche.