Получить идентификатор левой стороне таблицы на основе условия на правой стороне таблицы в SQL? - PullRequest
0 голосов
/ 26 февраля 2019

У нас есть две таблицы " Заголовок " и " Запрос ".

Таблица заголовков имеет следующие столбцы " NewItemHeaderId ", " HeaderStatus "

Таблица запросов имеет следующие столбцы " NewItemRequestid ", " RequestStatus ", " NewItemHeaderId "

Табличные значения, как показано ниже при использовании левого соединения

NewItemHeaderId | HeaderStatus                      | NewItemRequestId | RequestStatus
1147             MRD - Standardizer Pending          3351               MRD - Standardizer Pending
1148             TPSP - QC Pending                   3352               TPSP - QC Pending
1148             TPSP - QC Pending                   3353               TPSP - QC Pending
1149             TPSP - QC Pending                   3354               MRD - Standardizer Pending
1149             TPSP - QC Pending                   3355               MRD - Standardizer Pending

Мне нужно получить NewItemHeaderId, где выполняются следующие условиякак показано ниже

  • RequestStatus должен быть " MRD - Ожидание стандартизатора "
  • HeaderStatus также должно быть " MRD - Ожидание стандартизатора "

приведенный выше пример

NewItemHeaderId 1149, имеющий две записи в таблице запросов (3354,3355).

нам нужно проверить 3354 и 3355 RequestStatus будет "MRD"- Standardizer Pending "

, если оба имеют одинаковый статус, тогда нам нужно проверить HeaderStatus, это должно быть" MRD - Standardizer Pending ", если нет, нам нужно получить этот NewItemHeaderId.

, например, результатбудет как показано ниже

NewItemHeaderId
---------------
1149

1147 nне отображается, так как RequestStatus и состояние заголовка «MRD - ожидание стандартизатора»

1148 не отображаются, поскольку RequestStatus не «MRD - ожидание стандартизатора»

В приведенной выше таблице HeaderStatus будет «MRD»- Ожидание стандартизации "для 1149 NewItemHeaderId

будет возвращено значение NULL.

над таблицей SQL запрос, как показано ниже

SELECT NIH.NewItemHeaderId,NIH.TPSPStatus AS 'Header Status', 
NIR.NewItemRequestId,NIR.Status AS RequesStatus
FROM NewItemHeader NIH
LEFT JOIN NewItemRequest NIR ON NIR.NewItemHeaderId = NIH.NewItemHeaderId

1 Ответ

0 голосов
/ 26 февраля 2019

Полагаю, вы должны добавить условия как

SELECT NIH.NewItemHeaderId,NIH.TPSPStatus AS 'Header Status', 
NIR.NewItemRequestId,NIR.Status AS RequesStatus
FROM NewItemHeader NIH
LEFT JOIN NewItemRequest NIR ON NIR.NewItemHeaderId = NIH.NewItemHeaderId
WHERE NIH.TPSPStatus = 'MRD - Standardizer Pending' 
AND NIR.Status = 'MRD - Standardizer Pending' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...