我正在生成一个日历表,如何生成重复序列,如下所示。感谢。
dt |id_1|id_2
2013-01-01 00:00:00 |1| 3
2013-01-01 01:00:00 |1| 3
2013-01-01 02:00:00 |1| 3
2013-01-01 03:00:00 |2| 3
2013-01-01 04:00:00 |2| 3
2013-01-01 05:00:00 |2| 4
2013-01-01 06:00:00 |3| 4
id_1的序列将是1,1,1,2,2,2,3,3,3 ......直到6,6,6,然后重新开始1,1,1,..
和id_2的序列将从3,3,3,3,3,4,4,4,4,4 ......开始直到9,9,9,9,9,然后重新开始1,1 ,1,1,1 ......
答案 0 :(得分:0)
嗯,你可以用基本的算法做到这一点。答案是将日期和小时转换为自2013年1月1日午夜以来的小时数,然后使用整数除法和模运算符将它们转换为系列。结果如下:
select (((date(dt) - date('2013-01-01))*24 + hour(dt)) div 3) mod 5) + 1 as id_1,
(2+(((date(dt) - date('2013-01-01))*24 + hour(dt)) div 5) mod 9) + 1 as id_2