Chr*_*ris 2 sql t-sql sql-server
我有一个开始年份和结束年份,例如2017年和2019年.
我想在我声明的startYear和endYear之间创建一个包含年份和季度(例如,1,2,3,4)的表格,并在最终的endYear中设置季度,在2处停止(它始终向前看) .
下面的样本输出.
year quarter
2017 1
2017 2
2017 3
2017 4
2018 1
2018 2
2018 3
2018 4
2019 1
2019 2
Run Code Online (Sandbox Code Playgroud)
看起来它应该很简单,除了有些笨重的方法依赖于循环或UNION或只是手动将值插入表中,没有任何事情发生在我身上.
只是另一种选择......一个特殊的理货表与一个 Cross Join
例
Declare @Y1 int = 2017
Declare @Y2 int = 2019
Select *
From ( Select Top (@Y2-@Y1+1) Year=@Y1-1+Row_Number() Over (Order By (Select NULL)) From master..spt_values n1 ) A
Cross Join (values (1),(2),(3),(4)) B([Quarter])
Run Code Online (Sandbox Code Playgroud)
返回
Year Quarter
2017 1
2017 2
2017 3
2017 4
2018 1
2018 2
2018 3
2018 4
2019 1
2019 2
2019 3
2019 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |