sql temptime 日期差值_如何按指定月数分拆日期区间?

3b28eef199a283bc02fbaf239c577cba.png

定义日期查询表格,主表字段:开始日期,结束日期,日期间隔(月份)--数值,设定间隔(月份)-数值,间隔段-数值;扩展表字段:度量序号-数值,开始日期,结束日期。
其中,开始日期和结束日期手动输入给出日期间隔,日期间隔(月份)-数值:通过计算得出两个日期间隔相隔月份,如果结束日期的"天" 大于开始日期的"天",则月份间隔+1(计算日期间隔的时候,如果时间2.5个月,间隔只计算出2,所以+1);
设定间隔(月份)-数值:手动设定间隔月份,可以是1个月,三个月,六个月,12个月,为数值型,根据需要手动设定。
时间段:根据计算出的日期间隔和设定的时间间隔,向上整除,得到需要的行数。日期间隔=13 设定间隔=3 则时间段=5;设定间隔=4,时间段=4,然后根据主表时间段,设定间隔提取扩展表的时间段数据。

807b6b3ec61e89d258237bbc32e650e6.png


提取开始日期和结束日期的间隔月份(结束日期天 大约开始日期天时,向上+1)
建立提取公式:名称:提取时间段间隔月份执行时机:自动执行筛选条件:开始日期不为空 并且 结束日期不为空填充: 日期间隔(mm,本报表.[日期筛选_主表].[租金开始日期],本报表.[日期筛选_主表].[租金结束日期])+case when 日期间隔(dd,本报表.[日期筛选_主表].[租金开始日期],本报表.[日期筛选_主表].[租金结束日期])>0 then 1 else 0 end
这里填充应用到两个功能点:

a:高级函数里面的日期间隔,日期间隔(mm,开始日期,结束日期) 直接去两个日期之间的差值。

b:case when 语法,这与excel公式工if语法对应,在SQL中,可以用 case when 条件 then 结果 end来做条件判断,这里就是为了判断结束日期的填比开始日期的天大时,+1。
case when 条件 then 结果 end 中,在 case 和 end 间可以加很多个when then。

e6e0c02eddbf9b321272a86f14d9a471.png

提取间隔月份后,手动设定需要查询的间隔月份,可以是1个月,3个月,6个月,根据自身需要设定,
设定好后,使用ROUNDUP函数,计算日期间隔和设定间隔的区间段数。

9384b63fdd8f03f95d68b6ddfbb95b99.png

随便建立一个序号表,从1往下排,类似上个帖子的日期设置表,这个表更简单,只需要序号信息。

8895ff0330687bcd2195c93ccab46db1.png

建立提取公式,提取扩展表的日期
名称:提取查询时间间隔
数据来源:序号表
执行时机:手动执行
筛选条件:序号表序号<=间隔段数值
填充:扩展表间隔段---序号表序号 升序
扩展表开始日期---case when [序号表_扩展表].[序号]=1 then 本报表.[日期筛选_主表].[租金开始日期] else 日期加减(m,[序号表_扩展表].[序号]-1,本报表.[日期筛选_主表].[租金开始日期]) end
扩展表结束日期----case when [序号表_扩展表].[序号]=本报表.[日期筛选_主表].[间隔段] then 本报表.[日期筛选_主表].[租金结束日期] else 日期加减(m,[序号表_扩展表].[序号]*本报表.[日期筛选_主表].[间隔段],本报表.[日期筛选_主表].[租金开始日期])-1 end

8fb9dea879df97d9ab9f8f14035a3944.png

f599bf975d1a88d6a943a8ba15aa07be.png

b99f3886447258cca2b7340e72f039c8.png

最终效果:

a32c9c25264dc745d5ba5581fff7bd6b.png

----------------------------- 优美的分割线 -----------------------------------

微信公众号:Workfine数据管理平台
Workfine行业交流群:772383629
Workfine数据管理平台 - 首页​www.bossietech.com
fbd88f97d786ad43cc3653a5aa762fe9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值