账龄如何根据查询时间的变动而变动?

想要按照每月底的统计周期查询账龄,目前我只能做到按季度查询,请教一下月度的模板数据集SQL如何写?

坏账计提--测试.zip

ds1的SQL语句:

declare @tm date

declare @jone date

set @tm=GETDATE()

DECLARE @dt datetime

SET @dt = GETDATE ()

DECLARE @number int

SET @number = 3

set @jone=cast(year(@tm)*10000 +(month(@tm)/3*3+1)*100 +1 as varchar(8)) /*这个季度的第一个月的第一天*/

--dateadd(MONTH ,-3,@jone) 上个季度第一天

SELECT 起算日,

    DATEDIFF(month,起算日,GETDATE ())*1.0/12 as 使用年限

  ,cast(DATEDIFF(month,起算日,DATEADD ( Day , - 1 ,

     CONVERT ( char ( 8 ),

         DATEADD ( Month ,

             1 + DATEPART (Quarter, @dt ) * 3 - Month ( @dt ),

             @dt ),

         120 ) + ' 1 ' ))*1.0/12 as decimal(18,4))  as 新账龄

  FROM dbo.坏账计提

where 计提日期=dateadd(d,-day(dateadd(MONTH ,-1,@jone)),dateadd(m,1,dateadd(MONTH ,-1,@jone)))--上季度最后一天

image.png

FineReport 白日梦想家不加 发布于 2023-11-3 10:01 (编辑于 2023-11-3 11:16)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
白日梦想家不加Lv3见习互助
发布于2023-11-3 11:15

使用'${查询时间}'  即可实现引用控件值

最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-11-3 10:04(编辑于 2023-11-3 11:18)

内置数据集看不到SQL

--------

dateadd(d,-day(dateadd(MONTH ,-1,@jone)),dateadd(m,1,dateadd(MONTH ,-1,@jone)))

上面 @jone=20231001

dateadd(d,-day(dateadd(MONTH ,-1,'20231001')),dateadd(m,1,dateadd(MONTH ,-1,'20231001')))

等于

dateadd(d,-day('20230901'),dateadd(m,1,'20230901'))

=

dateadd(d,-1,'20231001')

=

20230930

用得着这么复杂么?前面的更看不懂了~~

  • 白日梦想家不加 白日梦想家不加(提问者) ds1SQL: declare @tm date declare @jone date set @tm=GETDATE() DECLARE @dt datetime SET @dt = GETDATE () DECLARE @number int SET @number = 3 set @jone=cast(year(@tm)*10000 +(month(@tm)/3*3+1)*100 +1 as varchar(8)) /*这个季度的第一个月的第一天*/ --dateadd(MONTH ,-3,@jone) 上个季度第一天 SELECT 起算日, DATEDIFF(month,起算日,GETDATE ())*1.0/12 as 使用年限 ,cast(DATEDIFF(month,起算日,DATEADD ( Day , - 1 , CONVERT ( char ( 8 ), DATEADD ( Month , 1 + DATEPART (Quarter, @dt ) * 3 - Month ( @dt ), @dt ), 120 ) + \' 1 \' ))*1.0/12 as decimal(18,4)) as 新账龄 FROM dbo.坏账计提 where 计提日期=dateadd(d,-day(dateadd(MONTH ,-1,@jone)),dateadd(m,1,dateadd(MONTH ,-1,@jone)))--上季度最后一天
    2023-11-03 10:40 
  • Z4u3z1 Z4u3z1 回复 白日梦想家不加(提问者) 帆软支持sql数据集里面定义变量了?????
    2023-11-03 10:42 
  • 白日梦想家不加 白日梦想家不加(提问者) 回复 Z4u3z1 嗯 是的
    2023-11-03 10:46 
  • Z4u3z1 Z4u3z1 回复 白日梦想家不加(提问者) 不是吧 。据我所知帆软不支持这种写法。你只有用存储过程封装它,然后帆软调用存储过程才行
    2023-11-03 10:48 
  • 白日梦想家不加 白日梦想家不加(提问者) 回复 Z4u3z1 定义变量是可以实现的~~
    2023-11-03 10:51 
最佳回答
0
CD20160914Lv8专家互助
发布于2023-11-3 10:08

月度不就是直接按你录入的月度开始与结束时间查询就行了,在数据集里面写类似这样语句,再把参数放在参数面板上面就行了

----------------------

select * from 表名称

where 1=1

and 日期字段>='${开始时间}'

and 日期字段<='${结束时间}'

  • 白日梦想家不加 白日梦想家不加(提问者) 不好意思,不是简单的日期查询,而应本月查询:计提日期是上一月度(这个可以忽略,我后期加上)/季度的所有数据,并且查出的数据中,账龄应该随着查询日期的变动而变化。不太知道内置数据集的SQL如何写。 ds1SQL: declare @tm date declare @jone date set @tm=GETDATE() DECLARE @dt datetime SET @dt = GETDATE () DECLARE @number int SET @number = 3 set @jone=cast(year(@tm)*10000 +(month(@tm)/3*3+1)*100 +1 as varchar(8)) /*这个季度的第一个月的第一天*/ --dateadd(MONTH ,-3,@jone) 上个季度第一天 SELECT 起算日, DATEDIFF(month,起算日,GETDATE ())*1.0/12 as 使用年限 ,cast(DATEDIFF(month,起算日,DATEADD ( Day , - 1 , CONVERT ( char ( 8 ), DATEADD ( Month , 1 + DATEPART (Quarter, @dt ) * 3 - Month ( @dt ), @dt ), 120 ) + \' 1 \' ))*1.0/12 as decimal(18,4)) as 新账龄 FROM dbo.坏账计提 where 计提日期=dateadd(d,-day(dateadd(MONTH ,-1,@jone)),dateadd(m,1,dateadd(MONTH ,-1,@jone)))--上季度最后一天
    2023-11-03 10:44 
  • CD20160914 CD20160914 回复 白日梦想家不加(提问者) 数据集里面不支持这个写法
    2023-11-03 10:45 
  • 白日梦想家不加 白日梦想家不加(提问者) 回复 CD20160914 不支持引用控件值?
    2023-11-03 10:47 
  • CD20160914 CD20160914 回复 白日梦想家不加(提问者) 你的数据集里面@这种变量它支持?
    2023-11-03 10:48 
  • 白日梦想家不加 白日梦想家不加(提问者) 回复 CD20160914 是的,就是ds1的SQL。
    2023-11-03 10:52 
  • 1关注人数
  • 334浏览人数
  • 最后回答于:2023-11-3 11:18
    请选择关闭问题的原因
    确定 取消
    返回顶部