假设我有一个表(~1M行),如下所示:
ID
1
2
3
4
5
6
.
.
.
我想在2014年和2015年的全年添加年份和月份列。 所以输出变为:
ID Year Month
1 2014 1
1 2014 2
1 2014 3
. . .
. . .
. . .
1 2015 12
2 2014 1
2 2014 2
and so on so forth.
我该怎么办? 感谢
答案 0 :(得分:2)
听起来你想创建一个cartesian product
。这是使用cross join
:
select t1.id, t2.yr, t3.mnth
from yourtable t1
cross join (select 2014 yr union all select 2015) t2
cross join (select 1 mnth union all select 2 union all select 3 union all
select 4 union all select 5 union all select 6 union all
select 7 union all select 8 union all select 9 union all
select 10 union all select 11 union all select 12) t3
order by t1.id, t2.yr, t3.mnth