開始日と終了日が指定されている場合、四半期ごとの日数を計算したいと考えています。
たとえば、1 つのテーブルに開始日と終了日の 2 つの列があるとします。開始日 = 9 月 1 日、終了日は 11 月 14 日です。
各四半期に存在するこれら 2 日間の間に存在する日数を計算したい
Q3 - 30 days
Q4 - 45 days (for this scenario)
よろしく。
開始日と終了日が指定されている場合、四半期ごとの日数を計算したいと考えています。
たとえば、1 つのテーブルに開始日と終了日の 2 つの列があるとします。開始日 = 9 月 1 日、終了日は 11 月 14 日です。
各四半期に存在するこれら 2 日間の間に存在する日数を計算したい
Q3 - 30 days
Q4 - 45 days (for this scenario)
よろしく。
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)
これを取得するには、再帰クエリを使用できます。これにより、開始日と終了日の間の日付のリストが生成され、四半期ごとの日数が取得されます。
;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)
デモで SQL Fiddle を参照してください