【发布时间】:2019-02-07 17:48:04
【问题描述】:
我想捕获每个数字的聚合,但不确定如何从具有不同“WHERE”标准的几个查询(来自同一个表的所有数据)中收集所有结果。
例如,
第一个查询:
SELECT * FROM tbl
WHERE tbl.from IN ('NIVA', 'TIRB', 'RIFG', 'PWDF')
AND tbl.send_date > TRUNC(SYSDATE) - 30
GROUP BY tbl.job_nbr;
第二次查询:
SELECT * FROM tbl
WHERE tbl.from IN ('GGGB','GVCE','GMWA','GTYR')
AND tbl.to IN ('GGGBP2','GVCEP3','GMWAP1','GTYRP3')
AND tbl.send_date > TRUNC(SYSDATE) - 30
GROUP BY tbl.job_nbr;
我不确定仅使用 WHERE 子句是否满足我的要求
WHERE tbl.from IN ('NIVA', 'TIRB', 'RIFG', 'PWDF')
AND tbl.from IN ('GGGB','GVCE','GMWA','GTYR')
AND tbl.to IN ('GGGBP2','GVCEP3','GMWAP1','GTYRP3')
我感到困惑的是,我的第一个查询生成的结果不需要满足第二个查询的第一个 AND 运算符条件。似乎如果我将所有列出的值合并到 'tbl.from IN' 条件中并使用 AND 运算符('tbl.to IN'),则返回的结果将仅是 'tbl.from IN' 条件中列出的结果使用“tbl.to IN”列。
两个查询显然会产生单独的结果,但我想组合一组结果,以便我可以计算所有出现的次数,按唯一作业编号 (tbl.job_nbr) 分组。
*注意:我也有点担心性能,因为我想合并到更大的查询中。
我确信它很简单,或者至少有点简单,但我花了很多时间试图弄清楚这一点。如果有人愿意帮助我,我将不胜感激!
如果我解释得不够清楚或有人有其他问题,我会尽力澄清。
【问题讨论】: