【sql】

请问大家,我想实现在数据集里写sql,当参数【截至日期】=最新月份时,执行sql1,不然执行sql2,这个最新月份是通过sql计算出来的:select convert(char(6),dateadd(dd, - DATEPART (weekday , getdate()+@@DATEFIRST -1)-2,getdate()),112)

如果我直接下图,sql无误

image.png

如果这样写,就识别不出来

image.png

请问应该怎么修改?

以下以FRdemo为例,语句是否准确?

${

if(

("select strftime('%m',date('now'))")=截至月份,

"select strftime('%m',date('now')) as ym

"

,

"

select 1 as ym

"

)

}

FineReport ran1025 发布于 2022-9-1 10:45 (编辑于 2022-9-1 14:22)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-9-1 10:47(编辑于 2022-9-1 14:29)

至少sql语句引号引起来

${if(截止日期="select convert(char(6),dateadd(dd, - DATEPART (weekday , getdate()+@@DATEFIRST -1)-2,getdate()),112)","","")}

===================

你的例子,改了下就可以

${if(sql("FRDemo","select strftime('%m',date('now'))",1,1)=截至月份,"select strftime('%m',date('now')) as ym","select 1 as ym")}

执行相等的语句了

image.png

所以你的改成

${if(截止日期=sql("你的数据链接","select convert(char(6),dateadd(dd, - DATEPART (weekday , getdate()+@@DATEFIRST -1)-2,getdate()),112)",1,1),"","")}

  • ran1025 ran1025(提问者) 引起来sql是通的,但是我选择202208却是执行的sql2,按理说应该执行sql1才对.....select convert(char(6),dateadd(dd, - DATEPART (weekday , getdate()+@@DATEFIRST -1)-2,getdate()),112)的结果是202208
    2022-09-01 11:17 
  • snrtuemc snrtuemc 回复 ran1025(提问者) 你看看 截止日期 这个参数是什么格式,单独单元格=$截止日期,看看效果
    2022-09-01 11:19 
  • ran1025 ran1025(提问者) 回复 snrtuemc 我完善了问题,能麻烦帮我测试一下吗?
    2022-09-01 14:22 
  • snrtuemc snrtuemc 回复 ran1025(提问者) 知道原因了,这个判断,需要sql函数取数,不然你数据结果集和字符串判断,永远不对,看修改答案
    2022-09-01 14:27 
  • ran1025 ran1025(提问者) 明白了,谢谢!
    2022-09-01 14:35 
  • 1关注人数
  • 241浏览人数
  • 最后回答于:2022-9-1 14:29
    请选择关闭问题的原因
    确定 取消
    返回顶部