Nombre de jours au sortingmestre, SQL Server

Je veux calculer le nombre de jours par sortingmestre si la date de début et la date de fin sont données.

par exemple, une table a deux colonnes, date de début et date de fin. date de début = 1er septembre et arrivée le 14 novembre.

Je veux calculer le nombre de jours présents entre ces deux jours qui sont présents dans chaque sortingmestre

Q3 - 30 days Q4 - 45 days (for this scenario) 

Cordialement.

 declare @StartDate date='2012-09-01'; declare @EndDate date='2012-11-14'; select CEILING(month(dateadd(q,datediff(q,0,dateadd(dd,number ,@StartDate)),0))/3.0) as QuarterNo, COUNT(*) as 'number of days' from master..spt_values where type='p' and dateadd(dd,number ,@StartDate)<=@EndDate group by dateadd(q,datediff(q,0,dateadd(dd,number ,@StartDate)),0) 

Démo de violon SQL

Vous pouvez utiliser une requête récursive pour l'get. Cela génère la list des dates entre votre date de début et de fin, puis obtient le nombre de jours par sortingmestre:

 ;with cte (start, enddate) as ( select startdate, enddate from yourtable union all select dateadd(dd, 1, start), enddate from cte where dateadd(dd, 1, start) <= enddate ) select datepart(q, start) Quarter, count(datepart(q, start)) NoDays from cte group by datepart(q, start) 

Voir SQL Fiddle avec démo