我正在Denodo的2个表上过滤票证,该表记录了对票证进行的所有操作的历史记录。我想要的是看到“关键字”列为Null,而列模板不是“ temp〜”。我能够完美地达到第一个条件,但第二个则不能。那么该列中的任何行都不再返回'temp〜',但是由于它是历史表,因此它确实会返回已在工单上执行的其他操作,例如保存,完成,完成,因此它仍会返回我要过滤的票证号码。
SELECT A.ticket_number, A.created_on, A.keywords, B.Action
FROM table1 AS A LEFT JOIN
(SELECT MAX(action) as Action, ticket_number
FROM table2 GROUP BY ticket_number) AS B on A.ticket_number= B.ticket_number
WHERE created_on>= '2019-04-15' AND(NOT B.Action= 'Templates~' AND A.keywords IS NULL)
Actual table:
ticket_number | created_on | keywords | Action
ticket1 | 2019-04-15 | dog | Template1
ticket1 | 2019-04-15 | dog | Save
ticket2 | 2019-04-17 | NULL | no_temp
ticket3 | 2019-04-20 | NULL | no_temp
ticket2 | 2019-04-17 | NULL | no_temp
Current results:
ticket_number | created_on | keywords | Action
ticket1 | 2019-04-15 | NULL | Save
ticket2 | 2019-04-17 | NULL | working
ticket3 | 2019-04-20 | NULL | Save
ticket2 | 2019-04-17 | NULL | complete
Expected results:
ticket_number | created_on | keywords | Action
ticket2 | 2019-04-17 | NULL | no_temp
ticket3 | 2019-04-20 | NULL | no_temp
答案 0 :(得分:0)
查看提供的信息,结果似乎是正确的。
查询的WHERE条件为:
WHERE created_on>= '2019-04-15' AND(NOT B.templates = 'Templates~' AND A.keywords IS NULL)
当前结果的所有行均满足此条件。那是
created_on
等于或大于2019-04-15
templates
的{{1}}的值不是 B
。null
的值为keywords
。