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