关于月份参数如何筛选上个月

报表设置了文本参数。有年份字段和月份字段。但是因为没有DATE字段,只有独立的两个时间年和月字段。不知道改如何筛选环比数据,万一是${}是1月份。环比就是上年12月。我就不知道怎么筛选了。SQL应该怎么写条件。有人知道吗

image.png

FineReport 努力学习中iii 发布于 2021-12-13 10:22 (编辑于 2021-12-13 10:25)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
墨残烛Lv5初级互助
发布于2021-12-13 10:30(编辑于 2021-12-13 10:52)

  • 努力学习中iii 努力学习中iii(提问者) 年和月还不是一个字段,是分开的两个字段,单独的年份,和单独的月份
    2021-12-13 10:35 
  • 墨残烛 墨残烛 回复 努力学习中iii(提问者) 如上图所示应该就符合你说的条件了吧?
    2021-12-13 10:48 
  • 努力学习中iii 努力学习中iii(提问者) 我是MYSQL
    2021-12-13 10:55 
  • 墨残烛 墨残烛 回复 努力学习中iii(提问者) 方法都是互通的,主要是掌握这个思路,你将年月按照日期格式拼接起来,再加个1表示年月日,然后用内部日期函数转化就好了,下面是MySQL的日期实例,你可以自己试一下 https://blog.csdn.net/weixin_34561824/article/details/113167395
    2021-12-13 11:01 
  • 努力学习中iii 努力学习中iii(提问者) 回复 墨残烛 MONTH(DATE_ADD(CONCAT(\'FYEAR\',\'-\',\'FMONTH\',\'-\',\'1\'),INTERVAL -1 MONTH))就可以了
    2021-12-13 11:03 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-12-13 10:23(编辑于 2021-12-13 10:29)

用MONTHDELTA()函数

image.png

image.png

  • 努力学习中iii 努力学习中iii(提问者) 没有date类型,年和月是分开的统计年字段,和统计月字段。。而且值类型不是DATETIME是INT
    2021-12-13 10:26 
  • Z4u3z1 Z4u3z1 回复 努力学习中iii(提问者) 抱歉,上面的函数外面在加一层YEAR(),MONTH()分别获取年、月就可以了
    2021-12-13 10:28 
  • 努力学习中iii 努力学习中iii(提问者) 回复 Z4u3z1 不是这个意思。。没有DATE字段,没有‘2021-01-15’。数据库里的时间只有‘2021’和‘01’。
    2021-12-13 10:31 
  • Z4u3z1 Z4u3z1 回复 努力学习中iii(提问者) 算了吧,我比较难习惯用一个控件。你参考LTC朝的吧
    2021-12-13 10:36 
最佳回答
0
LTC朝Lv6高级互助
发布于2021-12-13 10:27(编辑于 2021-12-13 10:33)

有一个方法,你再创建两个参数为环比年份和环比月份,用公式根据所填年份和月份来自动获得

image.png

效果如下:

image.png

最佳回答
0
shirokoLv6资深互助
发布于2021-12-13 10:34(编辑于 2021-12-13 10:35)

AND DS.FYEAR=${YEAR(MONTHDELTA(DATE(FYEAR,FMONTH,1),-1))}

AND DS.FMONTH=${MONTH(MONTHDELTA(DATE(FYEAR,FMONTH,1),-1))}

--

不知道你的字段是什么类型的,如果是字符串最好加上引号

AND DS.FYEAR='${YEAR(MONTHDELTA(DATE(FYEAR,FMONTH,1),-1))}'

AND DS.FMONTH='${MONTH(MONTHDELTA(DATE(FYEAR,FMONTH,1),-1))}'

最佳回答
0
快乐星光Lv5中级互助
发布于2021-12-13 10:56

sql 获取上年同期语句:

declare @tdate datetime

set @tdate = cast('2021-01-01' as datetime)

select CONVERT(varchar(10), CONVERT(varchar(8),dateadd(year,-1,@tdate),23)+CONVERT(varchar(10),day(@tdate),23 ) , 120)

你可以把年月拼接起来再加上一个01,就可以获取上年同期时间。

  • 5关注人数
  • 426浏览人数
  • 最后回答于:2021-12-13 10:56
    请选择关闭问题的原因
    确定 取消
    返回顶部