UniData查询过滤失效求助:多值文件LIST语句未按WHEN条件筛选
问题解决:UniData LIST语句过滤条件失效
核心问题
你当前的LIST语句错误地重复使用了WHEN关键字,这不符合UniData的语法规则。在UniData的LIST命令中,所有过滤条件应该合并到同一个WHEN子句中,多个条件用AND/OR连接,而非多次使用WHEN。
修正后的查询语句
将你的语句修改为:
LIST MBR.FILE MBR_UMID MBR_NM MBR_GK_BD MBR_GK_ED GK_ADJ_CD LOB_CLASS PROD_LOB PROD_BD WHEN PROD_LOB = "MER" AND GK_ADJ_CD = "" AND MBR_GK_ED = ""
原因解释
在UniData中,多次使用WHEN会被解析为多组独立的条件判断,而非逻辑与的关系。原本的写法会让系统对每个WHEN条件单独处理,不符合你想要的“同时满足所有条件才显示”的逻辑,反而会把不满足条件的字段置空,而非过滤掉整行数据。
额外提示
如果需要更复杂的逻辑(比如包含OR),可以用括号明确优先级,例如:
LIST MBR.FILE ... WHEN (PROD_LOB = "MER" OR PROD_LOB = "XYZ") AND GK_ADJ_CD = ""
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

