如何在SQL中的同一个表中的数据集中查找缺少的alpha值

时间:2010-03-31 22:06:36

标签: sql search scripting

我有一个包含许多值的表,其中一列具有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

3 个答案:

答案 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)