Sql 在ORACLE中使用2个条件进行计数

Sql 在ORACLE中使用2个条件进行计数,sql,oracle,Sql,Oracle,我非常努力地从1个表中查询2个条件。 每个条件都应该能够根据交易日期计算行数 问题1: 选择 研究所编号:, TRUNC(in_TS)in_TS, 计数(*)总检查 来自TMCI_质控_线路2 何处安装编号为“M190200772” 分组 研究所编号:, TRUNC(INS_TS) 查询1的结果: INST-NO-INS-TS总检查 M190200772 19年2月18日8 M190200772 19-FEB-19 3 问题2: 选择 研究所编号:, TRUNC(in_TS)in_TS, 计

我非常努力地从1个表中查询2个条件。 每个条件都应该能够根据交易日期计算行数

问题1:

选择
研究所编号:,
TRUNC(in_TS)in_TS,
计数(*)总检查
来自TMCI_质控_线路2
何处安装编号为“M190200772”
分组
研究所编号:,
TRUNC(INS_TS)
查询1的结果:

INST-NO-INS-TS总检查
M190200772 19年2月18日8
M190200772 19-FEB-19 3
问题2:

选择
研究所编号:,
TRUNC(in_TS)in_TS,
计数(*)案例检查
来自TMCI_质控_线路2
其中,安装编号为M190200772,数量为(0)
分组
研究所编号:,
TRUNC(INS_TS)
查询2的结果: 表2:

不安装外壳检查
M190200772 19年2月18日4
M190200772 19-FEB-19 2
现在,我希望结果如下所示:

无安装检查案例
M190200772 19年2月18日8 4
M190200772 19-FEB-19 3 2

您需要新列的第一个查询和条件聚合:

SELECT 
  INST_NO,
  TRUNC(INS_TS) INS_TS, 
  COUNT(*) INSPECTION,
  SUM(CASE WHEN QTY_OK = 0 THEN 1 ELSE 0 END) CASE
FROM TMCI_QC_LINE2
WHERE INST_NO='M190200772'
GROUP BY INST_NO, TRUNC(INS_TS)

就我个人而言,我认为我应该使用
计数(当数量=0时,则为1结束)案例检查
,因为1)更短,2)更清楚地表明你在进行计数。但其中任何一个都可以用1求和,并在else部分显式设置0,这总是更容易理解,但这也是风格的问题;只是为OP*{:-)提供了一个替代方案,非常感谢,它真的很有效,在我的查询中两个都运行得很好:)