【发布时间】:2015-12-14 10:40:39
【问题描述】:
我无法编译查询,但无法执行以下操作:
- 我有一张表,其中包含 startDate 和 endDate [tblPayments]
- 我有一个存储特定 paymentDay [tblPayments] 的列
数据
paymentID startDate endDate paymentDay
1 2016-01-01 2016-12-31 25
2 2015-06-01 2016-06-30 16
我正在尝试生成一个 SELECT 查询,它将根据这两个日期之间的月数将此特定表拆分为单独的行,并将 paymentDay 设置为这些查询的日期
示例输出
paymentID expectedDate
1 2016-01-25
1 2016-02-25
1 2016-03-25
1 2016-04-25
1 2016-05-25
1 2016-06-25
1 2016-07-25
1 2016-08-25
1 2016-09-25
1 2016-10-25
1 2016-11-25
1 2016-12-25
2 2015-06-16
2 2015-07-16
2 2015-08-16
2 2015-09-16
2 2015-10-16
2 2015-11-16
2 2015-12-16
2 2016-01-16
2 2016-02-16
2 2016-03-16
2 2016-04-16
2 2016-05-16
我找到了一个查询,它将选择这些日期之间的月份,但它会根据我上面的表格以及我正在努力解决的多个 startDates 和 endDates 进行调整
拆分月份
declare @start DATE = '2015-01-01'
declare @end DATE = '2015-12-31'
;with months (date)
AS
(
SELECT @start
UNION ALL
SELECT DATEADD(MM,1,date)
from months
where DATEADD(MM,1,date)<=@end
)
select Datename(MM,date) from months
这个查询仅限于一个startDate和endDate,所以我没有扩展它来改变日期的DAY。
【问题讨论】:
标签: sql sql-server