2017-02-21 5 views
0

Я пытаюсь построить рабочий SQL-запрос для извлечения необходимой мне информации. Я новичок в SQL (Oracle) и не уверен, что это возможно.Oracle SQL Как фильтровать столбцы более чем одной переменной

Ниже сгенерированный код для запуска запроса, который является правильным:

SELECT 
    0 s_0, 
    "Workforce Management - Work Relationship Real Time"."Legal Employer"."Name" s_1, 
    "Workforce Management - Work Relationship Real Time"."Worker Payroll"."Worker Payroll Name" s_2, 
    "Workforce Management - Work Relationship Real Time"."Worker"."Employee First Name" s_3, 
    "Workforce Management - Work Relationship Real Time"."Worker"."Employee Last Name" s_4, 
    "Workforce Management - Work Relationship Real Time"."Worker"."Person Number" s_5 
FROM "Workforce Management - Work Relationship Real Time" 

Затем я построил фильтр для идентификации сотрудников в группах оплаты, которые не совпадают с правильным юридическим работодателем:

WHERE 
(("Worker Payroll"."Worker Payroll Name" = 'Paygroup1') AND ("Legal Employer"."Name" <> 'Paygroup1 Legal Employer')) 

Это возвращает меня сотрудник, которые имеют неправильный соответствующий юридический работодатель в отношении их группы оплаты труда (т.е. сотрудников в Paygroup1 должен иметь соответствующий Paygroup1 Legal работодателя Так это будет возвращать что-то вроде:.

Количество сотрудников - Имя сотрудника - Paygroup1 - Paygroup2 Юридический работодатель

Однако, когда я добавить еще один фильтр на него, я получаю ошибки. Например:

WHERE 
((("Worker Payroll"."Worker Payroll Name" = 'Paygroup1') AND ("Legal Employer"."Name" <> 'Paygroup1 Legal Employer'))) 
AND 
(("Worker Payroll"."Worker Payroll Name" = 'Paygroup2') AND ("Legal Employer"."Name" <> 'Paygroup2 Legal Employer')) 

Всего будет 8 из них. Возможно ли это в SQL? Если да, то что я делаю неправильно? Я построил 8 отдельных отчетов с их отдельным фильтром, и все они работают, но желательно, чтобы я хотел 1 отчет со всеми 8 фильтрами.

+0

Определение "Я получаю ошибки". Вы получили сообщение об ошибке? Являются ли результаты неправильными? Например. если вы хотите получить всех сотрудников, чей законный работодатель paygroup 1 или чей юридический работодатель paygroup 2 не прав, вам нужно заменить 'AND' на' OR'. 'AND' вернет только сотрудников, для которых оба законных работодателя ошибаются. –

+0

@FrankSchmitt Hi Frank, спасибо за это. Вставив в OR вместо И фильтр работал без ошибок, я ценю помощь! –

ответ

0

Использование OR:

WHERE ( "Worker Payroll"."Worker Payroll Name" = 'Paygroup1' 
     AND "Legal Employer"."Name"    <> 'Paygroup1 Legal Employer' 
    ) 
OR ( "Worker Payroll"."Worker Payroll Name" = 'Paygroup2' 
     AND "Legal Employer"."Name"    <> 'Paygroup2 Legal Employer' 
    )