用Oracle计算2个条件

时间:2019-06-18 09:00:24

标签: sql oracle

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

查询1:

SELECT 
  INST_NO,
  TRUNC(INS_TS)INS_TS,
  COUNT(*) TOTAL_INSPECTION
FROM TMCI_QC_LINE2
WHERE INST_NO='M190200772'
GROUP BY 
    INST_NO, 
    TRUNC(INS_TS)

查询结果1:

INST_NO      INS_TS      TOTAL_INSPECTION
M190200772   18-FEB-19         8 
M190200772   19-FEB-19         3

查询2:

SELECT 
  INST_NO,
  TRUNC(INS_TS)INS_TS,
  COUNT(*) CASE_INSPECTION
FROM TMCI_QC_LINE2 
WHERE INST_NO='M190200772' AND QTY_OK IN (0)
GROUP BY
    INST_NO,
    TRUNC(INS_TS)

查询结果2: 表2:

INST_NO      INS_TS      CASE_INSPECTION
M190200772   18-FEB-19          4 
M190200772   19-FEB-19          2

现在,我希望结果看起来像这样:

INST_NO      INS_TS      INSPECTION    CASE
M190200772   18-FEB-19       8           4
M190200772   19-FEB-19       3           2

1 个答案:

答案 0 :(得分: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)