关于SQL的问题

SELECT DISTINCT CTD.PRODUCT_ID,

               CTD.LOT_ID,

               CTD.MEASURE_TIME,

               CTD.RECIPE_NAME,

               CTD.UPDATE_TIME,

               CTD.CP_TYPE,

               CTD.PARAMETER_ID,

               CTD.PARAMETER_KEY_FLAG,

               CTD.PARAMETER_NAME,

               CTD.PARAMETER_UNIT,

               CTD.SPEC_LOW,

               CTD.SPEC_HIGH,

               CLI.UPDATE_TIME,

               CLI.LOT_ID,

               CLI.MEASURE_TIME

          FROM WAT.CP_TEST_RAW_DATA_COL_DEFINE CTD, WAT.CP_LOT_WAFER_TEST_INFO CLI

         WHERE 1=1 AND CTD.PRODUCT_ID = CLI.PRODUCT_ID

         ${if(len(lotID) == 0, "", "AND CLI.LOT_ID='" + lotID + "'")}

         ${if(len(recipeName)==0,"","AND CLI.RECIPE_NAME='"+recipeName+"'")} 

         ${if(CTD.LOT_ID!='invalidLot',"","and CTD.LOT_ID = CLI.LOT_ID

         AND CTD.MEASURE_TIME=CLI.MEASURE_TIME ")}

           AND CLI.MEASURE_TIME =TO_DATE('${testTime}', 'yyyy-mm-dd hh24:mi:ss')

          AND CLI.UPDATE_TIME =TO_DATE('${updateTime}', 'yyyy-mm-dd hh24:mi:ss')

在决策报表里面  我这一条SQL 加了

  ${if(CTD.LOT_ID!='invalidLot',"","and CTD.LOT_ID = CLI.LOT_ID

         AND CTD.MEASURE_TIME=CLI.MEASURE_TIME ")}

这一个条件以后,为什么其他的$if没用了 查询的时候不会需要取值了?

用户D8037031 发布于 2020-12-17 16:05
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Kevin-sLv7中级互助
发布于2020-12-17 16:35

不能这边写,where下面是过滤用的

  • 用户D8037031 用户D8037031(提问者) 现在要的就是在id不等于\"invalidlot\"的情况下 加过滤条件
    2020-12-17 16:42 
  • Kevin-s Kevin-s 回复 用户D8037031(提问者) 一个字段不止一个值,所以一般都不成立
    2020-12-17 16:46 
  • 用户D8037031 用户D8037031(提问者) 回复 Kevin-s 这个值 有些特殊的东西所以是后台写死的 然后因为特殊的取值条件也不一样 所以才加上去的
    2020-12-17 16:51 
  • Kevin-s Kevin-s 回复 用户D8037031(提问者) 最简单的:你写两个sql Union all起来一个下条件:and ctd.lot_id !=\'invalidLot\' and CTD.LOT_ID = CLI.LOT_ID AND CTD.MEASURE_TIME=CLI.MEASURE_TIME,另一个过滤条件写:and ctd.lot_id !=\'invalidLot\' 即可
    2020-12-17 16:57 
最佳回答
0
许zheLv6见习互助
发布于2020-12-17 16:20

image.png这个地方不能是字段

  • 用户D8037031 用户D8037031(提问者) 不能是字段属实有点难为人
    2020-12-17 16:25 
  • 用户D8037031 用户D8037031(提问者) 有没有除了用if意外的其它判断方式呀
    2020-12-17 16:27 
  • 许zhe 许zhe 回复 用户D8037031(提问者) 你这个地方写字段意义都没有
    2020-12-17 16:27 
  • 许zhe 许zhe 回复 用户D8037031(提问者) and ctd.lot_id !=\'invalidLot\' and CTD.LOT_ID = CLI.LOT_ID AND CTD.MEASURE_TIME=CLI.MEASURE_TIME 这样不行吗?
    2020-12-17 16:31 
  • 用户D8037031 用户D8037031(提问者) 回复 许zhe 现在就是因为是两种方式查,规定条件不一样 才加的if
    2020-12-17 16:41 
  • 3关注人数
  • 361浏览人数
  • 最后回答于:2020-12-17 16:35
    请选择关闭问题的原因
    确定 取消
    返回顶部