用帆软报表直接写一份报表,要求如下:
查询条件包括工单号、录入员工号以及测试时间工单号和录入员工号为可选条件,勾选并输入才会进行筛选测试时间为必填条件,查询该事件段内数据这里条件是根据传入参数动态变化的,也意味着sql的查询也要跟着动态变化。以前写web都是通过相关框架进行查询,比如使用if标签,很少碰到直接使用sql的情况。刚开始也是想用if完成的,后来看到了case when,尝试一下用case when进行查询条件的增删改。
使用的是帆软报表,查询代码如下
WHERE TIME BETWEEN '${starttime}' AND '${endtime}' AND CASE WHEN '${checkoperator}'='true' THEN vc_operator WHEN '${checkoperator}'='false' THEN '${operator}' END ='${operator}' AND CASE WHEN '${checkworkorder}' = 'true' THEN vc_workorder WHEN '${checkworkorder}' = 'false' THEN '${workorder}' END ='${workorder}'结构如下
CASE WHEN 勾选 THEN 表中值 AND WHEN 不勾选 THEN 输入值 END =输入值也就是说勾选的情况下用表中值与输入值做对比,该查询条件起作用,不勾选的情况下用输入值与输入值做比较,结果必定相等,该查询条件效果上就没作用了。也就达到了需要的结果。