Sql 单个查询中的多个计数(*)

Sql 单个查询中的多个计数(*),sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我需要一个查询来获取基于某些条件的计数 select count(*) AS TOTAL_ROWS from table select count(*) AS TOTAL_ERROR_ROWS from table where ERROR_CODE is not null select count(*) AS TOTAL_SUCCESS_ROWS from table where ERROR_CODE is null 我想在一个查询中获取所有三个结果。在谷歌搜索后,我尝试过如下方式,但不

我需要一个查询来获取基于某些条件的计数

select count(*) AS TOTAL_ROWS from table

select count(*) AS TOTAL_ERROR_ROWS from table where ERROR_CODE is not null

select count(*) AS TOTAL_SUCCESS_ROWS from table where ERROR_CODE is  null
我想在一个查询中获取所有三个结果。在谷歌搜索后,我尝试过如下方式,但不起作用:

select
   count(*) as TotalCount,
   count(case when { where ERROR_CODE is not null} then 1 else 0 end) as QualifiedCount
from
   wli_qs_report_attribute

select count(*) as TOTAL,
    count(case when ERROR_CODE is not null then 1 else 0 end) as ExecCount,
from wli_qs_report_attribute
它不起作用。

您可以使用UNION:

但它将在一列中显示所有三个计数。要在三个不同的列中显示,请尝试以下操作:

SELECT COUNT(*) AS TOTAL_ROWS
     , COUNT(CASE WHEN ERROR_CODE IS NOT NULL THEN * END) AS TOTAL_ERROR_ROWS
     , COUNT(CASE WHEN ERROR_CODE IS NULL THEN * END) AS TOTAL_SUCCESS_ROWS
FROM table 
您可以使用UNION:

但它将在一列中显示所有三个计数。要在三个不同的列中显示,请尝试以下操作:

SELECT COUNT(*) AS TOTAL_ROWS
     , COUNT(CASE WHEN ERROR_CODE IS NOT NULL THEN * END) AS TOTAL_ERROR_ROWS
     , COUNT(CASE WHEN ERROR_CODE IS NULL THEN * END) AS TOTAL_SUCCESS_ROWS
FROM table 
而不是:

count(case when ERROR_CODE is not null then 1 else 0 end) as ExecCount
尝试:

而不是:

count(case when ERROR_CODE is not null then 1 else 0 end) as ExecCount
尝试:

选择总计行、总计错误行、总计行-总计错误行作为总计成功行 从…起 选择计数*作为总计行 ,计数器错误代码为总错误行 从桌子上 作为T

选择总计行、总计错误行、总计行-总计错误行作为总计成功行 从…起 选择计数*作为总计行 ,计数器错误代码为总错误行 从桌子上 AS T

SELECT COUNT(*) AS TOTAL_ROWS,
       SUM(CASE WHEN ERROR_CODE IS NOT NULL THEN 1 end) AS TOTAL_ERROR_ROWS,
       SUM(CASE WHEN ERROR_CODE IS NULL THEN 1 END) AS TOTAL_SUCCESS_ROWS 
FROM table