我正在尝试着解决如何在一个期间之间为每个月选择一行。该期间将具有表格中最早月份的开始日期。因此在下面的示例中,开始时间段将为2016-01-01,但结束时间段将由用户定义,比如说2017-02-01。我的表:在日期之间每个月选择一行
rowID | Month | someDate | SomeOtherDate | Number
1 | 2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2 | 2016-07-01 | 2019-03-01 | 2019-02-01 | 1
我要找的结果是这样的:
Month | someDate | SomeOtherDate | Number
2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2016-02-01 | 2018-01-01 | 2018-01-01 | 0
2016-03-01 | 2018-01-01 | 2018-01-01 | 0
2016-04-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-07-01 | 2019-03-01 | 2019-02-01 | 1
2016-08-01 | 2019-03-01 | 2019-02-01 | 1
2016-09-01 | 2019-03-01 | 2019-02-01 | 1
2016-10-01 | 2019-03-01 | 2019-02-01 | 1
2016-11-01 | 2019-03-01 | 2019-02-01 | 1
2016-12-01 | 2019-03-01 | 2019-02-01 | 1
2017-01-01 | 2019-03-01 | 2019-02-01 | 1
2017-02-01 | 2019-03-01 | 2019-02-01 | 1
基本上我需要复制的行,直到它找到另一行或满足结束日期,如果其他行发现然后复制该行直到达到结束期限,同时为每行增加月。希望这是有道理的。
任何帮助将不胜感激。
你需要再历表,由所有日期填写。你可以在你的查询之前填写它,或者与一些CTE一起“随时”填写。例如http://stackoverflow.com/questions/5635594/how-to-create-a-calender-table-for-100-years-in-sql – xdd