为每个ID创建新列

时间:2016-07-20 18:59:33

标签: mysql

假设我有一个表(~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.

我该怎么办? 感谢

1 个答案:

答案 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