您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL在日期范围内的分割数

SQL在日期范围内的分割数

使用spt_values表格创建日历表格,然后将其加入表格以将日期范围划分为所需的任何部分。

如果按年份除以金额,然后除以月份,您可以:

with dates as
(
select number,DATEADD(day,number,'20130101') as dt
    from master..spt_values
    where number between 0 and 1000 AND TYPE='P'
)
select
    m.start_date as org_start_date,
    m.end_date as org_end_date,
    min(d.dt) as new_start_date,
    max(d.dt) as new_end_date,
    m.amount*count(distinct month(d.dt))/(datediff(month,m.start_date,m.end_date)+1) as amount
from 
    MonthSplit m
join
    dates d
on 
    d.dt between m.start_date and m.end_date
group by 
    m.start_date, m.end_date, year(d.dt),m.amount

这是SQL FIDDLE DEMO

SQLServer 2022/1/1 18:38:27 有412人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶