【问题标题】:Denodo / SQL - Multiple conditions for AND and OR in WHERE clauseDenodo / SQL - WHERE 子句中 AND 和 OR 的多个条件
【发布时间】:2019-05-15 16:28:39
【问题描述】:

我在 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

【问题讨论】:

    标签: mysql sql-server denodo


    【解决方案1】:

    查看提供的信息,似乎结果是正确的。

    查询的WHERE条件为:

    WHERE created_on>= '2019-04-15' AND(NOT B.templates = 'Templates~' AND A.keywords IS NULL)

    当前结果的所有行都满足这个条件。那是

    • created_on 等于或大于 2019-04-15
    • 子查询Btemplates的值不是null
    • keywords 的值为null

    【讨论】:

    • 你是对的,但我需要的是在操作列下过滤没有被标记为“模板”的工单。我正在处理的这张表保存了“操作列”下所有操作的历史记录,这些操作已在工单上完成,例如“保存、进行中、模板”。所以我做了WHERE NOT B.Action = 'Templates~' 是的,它会删除标记为正在操作中的模板的工单,但仍会显示在操作列下具有“保存”和“进行中”的同一个工单。
    • @Jonathan,我想您必须为此使用子查询。我猜像WHERE created_on>= '2019-04-15' AND A.keywords IS NULL AND ticket_number NOT IN (SELECT ticket_number WHERE Action = 'Templates~')
    猜你喜欢
    • 2017-06-11
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多