Использование одного и того же столбца несколько раз в предложении SQL WHERE - PullRequest
0 голосов
/ 29 мая 2018

Я ищу способ написать запрос, который возвращает результаты, в которых столбцы могут использоваться несколько раз в выражении WHERE.Не могу найти лучший способ сделать это.

SELECT
  EMPLOYEE, CATEGORY, STATUS
FROM
  EMPLOYMENT
WHERE 
  (CATEGORY = 1 AND STATUS LIKE '%A%') AND (CATEGORY = 2 AND STATUS = 'B')

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Обычно вы уже используете имя столбца несколько раз (например, CATEGORY = 1 и CATEGORY = 2).

Но вопрос недостаточно ясен, чтобы дать вам реальный ответ на вопрос..

Внутреннее объединение:

SELECT e1.EMPLOYEE, e1.STATUS
FROM EMPLOYMENT as e1
Inner join EMPLOYMENT as e2 on
  e2.EMPLOYEE = e1.EMPLOYEE and e2.STATUS = ‘B’ and e2.CATEGORY = 2
WHERE (e1.CATEGORY = 1 AND e1.STATUS LIKE '%A%')

Это покажет все записи о занятости для сотрудников с CATEGORY = 1 и всех статусов, содержащих A, для которых тот же сотрудник также имеет STATUS B вКАТЕГОРИЯ 2

Он должен возвращать тот же результат, что и запрос @ Daniel

0 голосов
/ 29 мая 2018

Предположительно, вы хотите сотрудников, которые имеют эти условия.Если это так, вы можете использовать агрегацию:

SELECT EMPLOYEE
FROM EMPLOYMENT
WHERE (CATEGORY = 1 AND STATUS LIKE '%A%') OR
      (CATEGORY = 2 AND STATUS = 'B')
GROUP BY EMPLOYEE
HAVING COUNT(DISTINCT CATEGORY) = 2;  -- matches both
0 голосов
/ 29 мая 2018

Похоже, вы хотите 'Или' здесь:

    SELECT EMPLOYEE, CATEGORY, STATUS 
      FROM EMPLOYMENT 
      WHERE CATEGORY = 1 AND STATUS LIKE '%A%' 
and employee in (select EMPLOYEE from EMPLOYMENT where 
           CATEGORY = 2 AND STATUS = 'B')
...