Как найти пропущенные альфа-значения в наборах данных в пределах одной таблицы в SQL - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть таблица многих значений, где один столбец имеет номер WO, а другой столбец - идентификатор ресурса. Мне нужно иметь возможность найти все номера WO, которые не имеют значения ресурса "RW".

Вот пример типичной информации. Мне нужно знать, что рабочее задание 5678 не имеет идентификатора ресурса "RW".

Номер WO - ИД ресурса
1234 - IN
1234 - МЫ
1234 - AS
1234 - RW
5678 - PR
5678 - МЫ
5678 - IN
5678 - AS

Ответы [ 3 ]

1 голос
/ 01 апреля 2010

Вычтите номера WO с помощью 'RW' из набора всех номеров WO:

SELECT DISTINCT wo_number FROM mytable
MINUS
SELECT DISTINCT wo_number FROM mytable WHERE resource_id = 'RW'

Должно работать. Однако я не опытный пользователь SQL, поэтому ваш пробег может отличаться.

1 голос
/ 01 апреля 2010
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)
0 голосов
/ 01 апреля 2010

Если вы знаете количество возможных ресурсов и каждый номер WO может иметь не более 1 каждого возможного ресурса, то просто найдите те номера WO, которые не имеют всех возможных ресурсов:

SELECT WO_Number 
FROM <table> 
GROUP BY WO_Number 
HAVING COUNT(*) <> (number of resources)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...