1

我正在尝试生成一个报告,该报告显示满足以下两个条件之一的单个表中的记录:

1) "D" = 'ERR' 并且记录不到一周。

- 或者 -

2) "D" = 'X' OR 'Y' AND 记录超过一小时。

我从需求 #1 开始,但我不知道如何在应用了正确逻辑的同一个查询中执行这两个需求。对于要在报表上显示的记录,这两个条件中的任何一个都可以适用,而条件 #2 实际上也需要有一个 OR 运算符。

我可能还会将此报告更改为从过去 X 小时 (1/2/4/8) 开始工作,但我确信此站点上的另一篇文章解决了这个问题。

   SELECT "A", "B", "C"
     FROM Schema."Table" 
    WHERE "D"='ERR' AND TimeStamp >= (CURRENT_TIMESTAMP - 7 DAYS)
 ORDER BY TimeStamp DESC
4

2 回答 2

4

如果您使用(),您可以将条件组合在一起以获得所需的输出:

 SELECT "A", "B", "C"
       FROM Schema."Table" 
       WHERE ("D"='ERR' AND TimeStamp >= (CURRENT_TIMESTAMP - 7 DAYS)) OR
    (("D" = 'X' or "Y" = 'Y') and TimeStamp > (CURRENT_TIMESTAMP - 1 HOURS))
       ORDER BY TimeStamp DESC
于 2012-09-11T18:27:03.237 回答
1

使用括号将条件与 OR 分开。

SELECT "A", "B", "C"
FROM Schema."Table" 
WHERE ("D"='ERR' AND TimeStamp >= (CURRENT_TIMESTAMP - 7 DAYS))
      OR
      (("D" = 'X' or "Y" = 'Y') AND (TimeStamp) > (CURRENT_TIMESTAMP - 1 HOURS))
ORDER BY TimeStamp DESC
于 2012-09-11T18:31:28.243 回答