我想根據一個給定的開始和結束日期來分割季度。 我有以下表格:
table1
| ID | 開始日期 | 結束日期季度數||
|---|---|---|---|
| 1 | 01-01-2017 | 01-01-2018 | 4 |
因此,結果表應該有根據季度數和結束日期分割的日期。 結果表應該看起來像:
table2
table2
table2
table2
我在stackoverflow上找到了一個解決方案,它指出
declare @startDate datetime
declare @endDate datetime
select @endDate datetime
@startDate= ET.start_date。
@endDate= ET.end_date.
來自的
table1
With cte
作為
( Select @startDate date1
Union AllSelect DateAdd(Month,3, date1) From cte where date1 </span> @endDate
) select cast(cast( Year(date1)*10000 MONTH(date1)*100 100 1 as
varchar(255)) as date) quarterlyDates From cte
由于我是sql的新手,我在為我的問題定制它時遇到了麻煩。 誰能推薦一個方法?謝謝!
uj5u.com熱心網友回復:
如果我沒有理解錯的話,遞回CTE應該是這樣的:
with cte as (
select id, start_date, num_quarters
from t
unionall
select id, dateadd(month, 3, start_date), num_quarters - 1
from cte
where num_quarters > 1
)
選擇 *
from cte;
這里是一個db<>fiddle。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/314823.html
標籤:
