2017-02-21 39 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雇主的雇员那么这将返回类似:

员工编号 - 员工姓名 - 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个单独的报告,他们都工作,但最好我想要所有8个过滤器报告。

+0

定义 “我得到的错误”。你有错误信息吗?结果是否错误?例如。如果您想要获得所有员工的薪酬组1合法雇主或其薪酬组2合法雇主错误的所有员工,则需要用'OR'替换您的'AND'。 'AND'将只返回合法雇主都有错的雇员。 –

+0

@FrankSchmitt嗨,弗兰克,谢谢你。通过放入或者而不是和过滤器运行没有错误,我感谢帮助! –

回答

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' 
    )