Получить записи, где оба значения поля существуют в одной таблице - PullRequest
0 голосов
/ 14 июня 2019

У меня есть таблица 'ReceiverDet' с именами столбцов 'ReceiverNo' и 'PartNo'.Я хочу получить все записи, где «PartNo» равно «CoC» и введенное пользователем значение (т. Е. «44661»).Затем я хочу получить только те записи, которые содержат оба значения 'PartNo' с тем же 'ReceiverNo'.

Я пробовал UNION, JOIN и CTE и не могу заставить их работать, хотя я довольноуверен, что CTE является ответом.

Таблица ReceiverDet

+------------+--------+
| ReceiverNo | PartNo |
+------------+--------+
| 1001       | 9173   |
+------------+--------+
| 1002       | CoC    |
+------------+--------+
| 1003       | 5432   |
+------------+--------+
| 1003       | CoC    |
+------------+--------+
| 1002       | 44661  |
+------------+--------+

В этом примере я хочу, чтобы моим конечным результатом было ReceiverNo "1002", поскольку оно содержит и "CoC", и введенное пользователем значение "44661".

1 Ответ

1 голос
/ 14 июня 2019

Если ReceiverNo и PartNo являются составным ключом в таблице (однозначно идентифицировать запись), вы можете сделать это:

SELECT
  ReceiverNo
FROM
  ReceiverDet
WHERE
  PartNo = 'CoC'
  OR
  PartNo = @UserInput
GROUP BY
  ReceiverNo
HAVING
  COUNT(DISTINCT PartNo) = 2;
...