数据集参数参与到select子句计算

表A,有时间字段1,数值字段2,当时间过滤组件小于某个具体日期时,查询出来的是历史无用的值,需要显示为空。

select 时间字段1,数值字段2

from 表A

where 1=1

${if(len(date)=0,""," and cast(具体日期 as timestamp) <=cast('"+date+"' as timestamp) ")}

直接在where子句中做比较,这些记录无法显示。时间过滤组件绑定的数据集参数date无法直接在select里面使用。

要怎么写SQL呢。

SQL 冥河 发布于 2025-4-27 09:51
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2025-4-27 09:54(编辑于 2025-4-27 09:57)

select 时间字段1,数值字段2

from 表A

where 1=1

${if(date<"2025-01-01","1=2"," and cast(具体日期 as timestamp) <=cast('"+date+"' as timestamp) ")}

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

参数名最好换一下,不要用date ,用p_date之类的

  • 冥河 冥河(提问者) 老师傅,想要这些历史值也显示出来,要怎么改呢?
    2024-12-31 空值
    现在这写法,这些历史值显示不出来
    2025-04-27 09:58 
  • 华莉星宸 华莉星宸 回复 冥河(提问者) 你不是要历史数据显示为空吗
    2025-04-27 10:06 
  • 冥河 冥河(提问者) 回复 华莉星宸 这样是查询不到任务记录唉。
    2024年有100条记录,想要的效果是可以查询出来,但是值都变成了null。
    2024-12-01 100,显示成2024-12-01 null
    2025-04-27 10:10 
  • 华莉星宸 华莉星宸 回复 冥河(提问者) 那就不是简单的过滤问题了哈
    直接在select 部分修改
    select 时间字段1,
    case when '${date}'<'2025-01-01' then null else 数值字段2 end as 数值字段2
    from 表A
    where 1=1
    ${if(len(date)=0,""," and cast(具体日期 as timestamp) <=cast('"+date+"' as timestamp) ")}
    2025-04-27 10:12 
  • 冥河 冥河(提问者) 回复 华莉星宸 谢谢老师傅
    2025-04-27 10:14 
  • 2关注人数
  • 28浏览人数
  • 最后回答于:2025-4-27 09:57
    请选择关闭问题的原因
    确定 取消
    返回顶部