我试图生成两个数字之间的所有年份,如2000年和2010年,每年,我需要在第二列中有一组重复值。 例如;
Year Value
2000 Spring Term
2000 Fall Term
2001 Spring Term
2001 Fall Term
它应该持续到2010年。我可以使用以下脚本生成两个数字之间的年份:
; with CTE as
(
select year('2006') as yr
union all
select yr + 1
from CTE
where yr < year('2013')
)
select yr from CTE
但是,我无法生成每年的重复值。任何帮助表示赞赏。
答案 0 :(得分:1)
快速而“肮脏”的方式是使用LEFT-JOIN
:
;with CTE
as (
select year('2006') as yr
union all
select yr + 1
from CTE
where yr < year('2013')
)
select yr
, r.term
from CTE
left join (
select 'Spring Term' [term]
union all
select 'Fall Term'
) r on 1 = 1;
或使用CROSS JOIN
:
;with CTE
as (
select year('2006') as yr
union all
select yr + 1
from CTE
where yr < year('2013')
)
select yr
, r.term
from CTE
cross join (
select term
from (
values ('Sprint Term'), ('Fall Term')
) as tbl(term)
) r;