-
-
伶俐 数据达人Lv4
发表于2019-3-6 17:12
悬赏1
已解决
楼主
本帖最后由 伶俐 于 2019-3-6 17:15 编辑
求助社区的大神们,在写sql数据源的时候,参数单选的时候,我用
if(@hkzt='02',"(DD.FACT_REPAY_DATE is null)",if(@hkzt='03',"DD.IS_REPAYED='3'","DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3'")))#> 实现了对结果集的筛选,现在准备需求变更,想要实现多选,多选的时候 用 or 连接每一个条件,除了用IF条件一个一个列举,有没有什么好的办法来写这个sql, 具体需要实现的条件如下:
已还 01 DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3'
未还 02
DD.FACT_REPAY_DATE is null
部分已还 03
DD.IS_REPAYED='3'
万分感谢~~~
求助社区的大神们,在写sql数据源的时候,参数单选的时候,我用
if(@hkzt='02',"(DD.FACT_REPAY_DATE is null)",if(@hkzt='03',"DD.IS_REPAYED='3'","DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3'")))#> 实现了对结果集的筛选,现在准备需求变更,想要实现多选,多选的时候 用 or 连接每一个条件,除了用IF条件一个一个列举,有没有什么好的办法来写这个sql, 具体需要实现的条件如下:
已还 01 DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3'
未还 02
DD.FACT_REPAY_DATE is null
部分已还 03
DD.IS_REPAYED='3'

万分感谢~~~
最佳答案
伶俐 发表于 2019-3-6 17:48
现在这个要实现是这样的,首先 要多选,然后当参数选择‘01时’,执行下面的sql
DD.FACT_REPAY_DATE is ...
这个确实好复杂啊,我能想到的确实也只有if表达式了
10个回答
缱绻 发表于 2019-3-6 17:14
这个问题跟之前不是一样的么。我记得好像问过的呀
之前是多选,对于同一个字段进行判断,我们用<#=if(@zcfl='','1=1'," MM.FIVE_CLASS in ('" +replaceregex(@zcfl,"\|","','") +" ')")#> 这个解决了,这次需要修改的是 不同的 多选对应的条件是不一样的,我本来想直接用if 写,把每一个排列组合写出来,但是 BI好像对先后顺序 也有规定,排列组合 下来 要写的sql 就特别长,所以想问问有没有什么好的办法
伶俐 发表于 2019-3-6 17:20
之前是多选,对于同一个字段进行判断,我们用 这个解决了,这次需要修改的是 不同的 多选对应的条件是不 ...
之前的场景清楚了,但是对于你目前遇到问题的这个场景还是有点不太清楚哎。
缱绻 发表于 2019-3-6 17:31
之前的场景清楚了,但是对于你目前遇到问题的这个场景还是有点不太清楚哎。 ...
现在这个要实现是这样的,首先 要多选,然后当参数选择‘01时’,执行下面的sql
DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3'
当参数为 02 ,执行下面的sql
DD.FACT_REPAY_DATE is null
当参数为 03 ,执行下面的sql
DD.IS_REPAYED='3'
当参数为01,02 ,执行
(DD.FACT_REPAY_DATE is not null AND DD.IS_REPAYED<>'3') or DD.FACT_REPAY_DATE is null
以此类推。。。
你看有什么好的办法可以实现么
伶俐 发表于 2019-3-6 17:48
现在这个要实现是这样的,首先 要多选,然后当参数选择‘01时’,执行下面的sql
DD.FACT_REPAY_DATE is ...
这个确实好复杂啊,我能想到的确实也只有if表达式了