AS400 SQL查询:筛选同一Client下DATA 1存在差异的所有记录
解决AS400中筛选同一Client下DATA 1存在不同值的记录问题
可行SQL方案
先通过子查询定位出存在不同DATA 1值的Client,再关联原表取出这些Client的全部记录:
SELECT t.Client, t."DATA 1" FROM YourTableName t INNER JOIN ( SELECT Client FROM YourTableName GROUP BY Client HAVING COUNT(DISTINCT "DATA 1") > 1 ) sub ON t.Client = sub.Client ORDER BY t.Client, t."DATA 1";
关键说明
COUNT(DISTINCT "DATA 1") > 1:核心判断逻辑,统计每个Client下不同DATA 1的数量,大于1说明存在差异值- 替换语句中的
YourTableName为实际表名;AS400中字段名含空格时,必须用双引号包裹(比如"DATA 1") - 最后通过INNER JOIN关联,就能拿到目标Client的所有原始记录
测试结果
用你提供的测试数据执行该语句,会返回以下符合要求的记录:
| Client | DATA 1 |
|---|---|
| QRS | 555 |
| QRS | 556 |
| XYZ | 789 |
| XYZ | 789 |
| XYZ | 999 |
内容的提问来源于stack exchange,提问作者TommyV
相关产品推荐
相关产品推荐

