我有一个表,其中在客户编号列包含重复的值,我想选择有重复的客户编号条目的所有行,但只选择那些WO类型列只包含这些特定值('IMU',‘电气’)的行,所以在表映像中附加了这个问题:我应该只获得ID 1和2的行。
我不希望那些重复计数的地方重复行对也包含气体,但只希望那些重复的行,其中只包含IMU和电气值在WO类型列
非常感谢您的帮助。

发布于 2020-04-10 22:08:33
您可以使用group by和having
select customerNumber
from t
where woType in ('EMU', 'Electric')
group by customerNumber
having count(*) = 2;注意:这里假设没有重复的内容。要处理此问题,您可以使用:
having min(woType) <> max(woType)或者:
having count(distinct woType) = 2 -- number of elements in IN list发布于 2020-04-10 22:14:09
SELECT *
FROM tbl t1
WHERE EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype = 'IMU'
) AND EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype = 'Electric'
) AND NOT EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype NOT IN ('IMU', 'Electric')
)这是一个fiddle。
发布于 2020-04-10 22:30:55
试试这个:
select * From Table1 Main Inner ( select Customer_Number from Table1 group by Customer_Number Having COunt(Customer_Number)>1) SUB ON Main.Customer_Number=SUB.Customer_Number WHERE Main.Wo_Type IN ('IMU',‘select’)
此查询将返回表中重复的集合或行。
https://stackoverflow.com/questions/61142016
复制相似问题