永洪社区

标题: 如何在sql编写判断参数。 [打印本页]

作者: 鹿先森    时间: 2023-11-30 14:55
标题: 如何在sql编写判断参数。
参数1:发运/结算
参数2:发运时间
参数3:结算时间

当筛选选为参数1为发运时: 发运参数 >= 发运时间参数
当筛选选为参数1为结算时: 结算参数 >= 结算时间参数


如何在sql编写实现参数的嵌套

作者: yhdata_lyaa    时间: 2023-11-30 14:55
不太清楚你的数据和参数,举个简单的例子、看看是否符合。
在数据集写,数据集里的参数都有默认值。


报告三个参数,且都有默认值


报告变化时脚本写


效果







作者: yhdata_lyaa    时间: 2023-11-30 15:16
咋写嵌套需要自己研究了
数据集sql使用参数参考https://www.yonghongtech.com/rea ... paramindataset.html
参数参与SQL过滤https://yonghongtechonline.udesk.cn/question/226409
作者: 鹿先森    时间: 2023-11-30 15:36
yhdata_lyaa 发表于 2023-11-30 15:16
咋写嵌套需要自己研究了
数据集sql使用参数参考https://www.yonghongtech.com/real-help/Z-Suite/ ...

这个太简单了,实现不了,就是通过if判断,决定走哪个过滤条件
作者: yhdata_lyaa    时间: 2023-11-30 15:49
鹿先森 发表于 2023-11-30 15:36
这个太简单了,实现不了,就是通过if判断,决定走哪个过滤条件

一个思路可以试试


数据集sql查询参数用 ?{@a}

把 一段sql查询 语句作为参数,再脚本里写if进行判断
if(当筛选选为参数1等于 发运时){
param['a']=需要执行的sql语句1
}
if(当筛选选为参数1等于 结算时){
param['a']=需要执行的sql语句2
}









作者: 鹿先森    时间: 2023-11-30 15:52
yhdata_lyaa 发表于 2023-11-30 15:49
一个思路可以试试

这个怎么写,能描述的详细点吗
作者: 鹿先森    时间: 2023-11-30 16:05
yhdata_lyaa 发表于 2023-11-30 15:49
一个思路可以试试

select * from "blcs"
where
CASE WHEN ?{发运结算} = 1
THEN  to_date(发运时间,'yyyy-MM') >= ?{结束年月} and to_date(发运时间,'yyyy-MM') >= ?{结束年月}
ELSE   to_date(结算时间,'yyyy-MM') >= ?{开始年月} and to_date(结算时间,'yyyy-MM') >= ?{结束年月}
END;

这就是我想实现的sql,看看怎么写能正确
作者: yhdata_lyaa    时间: 2023-11-30 16:20
这两参数是啥,还有哪个字段在判断


作者: 鹿先森    时间: 2023-11-30 16:26
yhdata_lyaa 发表于 2023-11-30 16:20
这两参数是啥,还有哪个字段在判断

参数1:?{发运结算}
参数2:?{开始年月}
参数3:?{结束年月}

select * from "blcs"
where 1=1
AND (CASE WHEN ?{发运结算} = 1 THEN 发运时间 ELSE 结算时间 END) >= ?{开始年月}
AND (CASE WHEN ?{发运结算} = 1 THEN 发运时间 ELSE 结算时间 END) <= ?{结束年月}这样写是不是清楚点

作者: 鹿先森    时间: 2023-11-30 16:28
yhdata_lyaa 发表于 2023-11-30 16:20
这两参数是啥,还有哪个字段在判断

就是不知道过滤里面涉及到两个参数,我怎么写这个sql




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4