请问sql里if判断语句,可以设置成参数吗?

select [U_PrjCode] 项目号 

      ,[U_PrjName] 项目名称 

      ,[U_AtlStd] 服务周期开始日期 

      ,[U_AtlFnd] 服务周期结束日期 

      ,[DocTotal] 项目金额 

      ,COUNT([fd_benCiShiJiJieSuanJinE]) 累计结算次数 

      ,sum(cast([fd_benCiShiJiJieSuanJinE] as FLOAT)) 累计结算金额 

      ,min([doc_create_time]) 结算单申请日期 

      ,t.累计开票次数,t.累计开票金额,t.开票单申请日期

       ,iif((select (getdate()))-(select ([U_AtlFnd]))

where 1=1

${if(len(type) == 0,"","and 预警类型 in ('" + type + "')")}

筛选的时候报错了,请问写参数是不能用别名吗?这种情况怎么办?感谢大佬!!

FineReport 用户m2896739 发布于 2021-6-17 14:02 (编辑于 2021-6-17 14:18)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-6-17 14:03(编辑于 2021-6-17 14:18)

select A,B,C,D,IF(A-B=0,'橙色预警','红色预警') 预警类型

where 1=1 

${if(len(type) == 0,""," and IF(A-B=0,'橙色预警','红色预警') in ('" + type + "')")}

===============嵌套子查询试试

select * from

(select [U_PrjCode] 项目号 

      ,[U_PrjName] 项目名称 

      ,[U_AtlStd] 服务周期开始日期 

      ,[U_AtlFnd] 服务周期结束日期 

      ,[DocTotal] 项目金额 

      ,COUNT([fd_benCiShiJiJieSuanJinE]) 累计结算次数 

      ,sum(cast([fd_benCiShiJiJieSuanJinE] as FLOAT)) 累计结算金额 

      ,min([doc_create_time]) 结算单申请日期 

      ,t.累计开票次数,t.累计开票金额,t.开票单申请日期

       ,iif((select (getdate()))-(select ([U_AtlFnd]))<90 and (select (getdate()))-(select ([U_AtlFnd]))>=60 and min([doc_create_time]) is null and t.开票单申请日期 is null,'橙色预警',iif((select (getdate()))-(select ([U_AtlFnd]))>=90 and min([doc_create_time]) is null and t.开票单申请日期 is null,'红色预警','')) 预警类型)t

where 1=1

${if(len(type) == 0,""," and t.预警类型 in ('" + type + "')")}

  • LSQ000 LSQ000 where 后面还要加个1=1
    2021-06-17 14:08 
  • 用户m2896739 用户m2896739(提问者) 多谢回答,但还是报错,我写太简单了,实际情况有点复杂,判断里还用了子查询,我把代码发出来吧
    2021-06-17 14:10 
  • snrtuemc snrtuemc 回复 用户m2896739(提问者) 上面有人回复了,我也没仔细看,where后面少了1=1
    2021-06-17 14:12 
  • 用户m2896739 用户m2896739(提问者) 多谢,我去试下
    2021-06-17 14:24 
  • 用户m2896739 用户m2896739(提问者) 可以了,太感谢啦
    2021-06-17 14:29 
最佳回答
0
shirokoLv6资深互助
发布于2021-6-17 14:09

当前查询的别名,是不能在where里识别的。

子查询的别名才会识别

  • 3关注人数
  • 295浏览人数
  • 最后回答于:2021-6-17 14:18
    请选择关闭问题的原因
    确定 取消
    返回顶部