如何使用除非编写SQL查询过滤器?

时间:2016-07-29 04:34:52

标签: sql

我有一个返回付费代码和任务不匹配的交易的查询。但是,有一些可以忽略的代码/任务组合,例如“Salary”/“SalaryReg”。

有没有办法编写类似的查询:

select user, trxdate, paycode, task from TABLE 
where paycode <> task 
--unless when paycode = "Salary" the task = "SalaryReg"

任何建议将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

以下查询将选择表格paycode <> task中的所有记录,paycodeSalarytaskSalaryReg的情况除外。

SELECT user,
       trxdate,
       paycode,
       task
FROM yourTable
WHERE paycode <> task AND
     (paycode <> "Salary" OR task <> "SalaryReg")   -- this condition only kicks in when
                                                    -- paycode = "Salary" AND
                                                    -- task = "SalaryReg"

答案 1 :(得分:0)

select user, trxdate, paycode, task from TABLE 
where paycode <> task 
and not
(
    (paycode = "Salary" AND task = "SalaryReg")
OR
    (paycode = "Janitorial" AND task = "Cleaning")
OR
    (paycode = "FrontDesk" AND task = "GreetingCustomers")
)