我有一个包含许多值的表,其中一列具有WO编号,另一列具有资源ID。我需要能够找到所有没有“RW”资源值的WO编号。
以下是典型信息的示例。我需要知道工作单5678没有“RW”资源ID。
WO编号 - 资源ID
1234 - IN
1234 - WE
1234 - AS
1234 - RW
5678 - PR
5678 - WE
5678 - IN
5678 - AS
答案 0 :(得分:1)
SELECT DISTINCT M1.WONumber
FROM Mytable M1
WHERE
NOT EXISTS (SELECT 1/0 --or NULL, 1, *, 'bob'. All the same
FROM Mytable M2
WHERE M2.ResourceID = 'RW' AND M1.WONumber = M2.WONumber)
答案 1 :(得分:1)
从所有WO编号的集合中用'RW'减去WO编号:
SELECT DISTINCT wo_number FROM mytable
MINUS
SELECT DISTINCT wo_number FROM mytable WHERE resource_id = 'RW'
应该有效。我不是SQL强大的用户,所以你的里程可能会有所不同。
答案 2 :(得分:0)
如果您知道可能的资源数量,并且每个WO编号最多可以包含1个可能的资源,那么只需搜索那些没有所有可能资源的WO编号:
SELECT WO_Number
FROM <table>
GROUP BY WO_Number
HAVING COUNT(*) <> (number of resources)