AS400 SQL - 从文件中选择记录,其中基于另一列的分组存在唯一值

问题描述 投票:0回答:1

呼叫所有 AS400 SQL 专家 - 想象一下你有一个这样的数据库

客户 数据1
ABC 123
ABC 123
ABC 123
EFG 456
LMN 678
QRS波 555
QRS波 556
XYZ 789
XYZ 789
XYZ 999

我正在寻找一种 SQL 解决方案,它将对 Client 字段进行分组并检查 DATA 1 并识别特定客户端内任何 DATA 1 不同的所有实例。例如 - - 客户端 ABC - 客户端 ABC 的所有 DATA 1 都相同,因此请勿选择。 -Client EFG - 单个,因此 DATA 1 将始终匹配,因此请勿选择。 -Client LMN - 单个,因此 DATA 1 将始终匹配,因此请勿选择。 -客户端 QRS- 2 记录和 DATA 1 记录不匹配 -在 SQL 选择中包含所有内容 - 客户端 XYZ - 2 条记录相同,但有一条记录不匹配 - 将所有记录包含在 SQL 选择中。

所以最后我的 SQL 选择应该是这样的 -

客户 数据1
QRS波 555
QRS波 556
XYZ 789
XYZ 789
XYZ 999

也就是说,我有一个所有记录的列表,其中 DATA 1 在客户分组中不相同。

FWIW - 我已经测试了 UNIQUE、GROUP BY、HAVING COUNT 等......但我仍然发现自己陷入困境。 预先感谢您的任何和所有帮助。

FWIW - 我已经测试了 UNIQUE、GROUP BY、HAVING COUNT 等......但我仍然发现自己陷入困境。

sql database ibm-midrange
1个回答
0
投票

您可以使用 CTE 或子查询来获取具有多个不同 data_1 值的客户端。

select *
  from table1
where client in (
  select client
    from table1
  group by client
  having count(distinct data_1) > 1
  )
© www.soinside.com 2019 - 2024. All rights reserved.