Gau*_*oni 1 sql oracle oracle11g
CREATE TABLE TEMP25
(
STATUS VARCHAR2(200 BYTE)
);
Insert into TEMP25
(STATUS)
Values
('PENDING');
Insert into TEMP25
(STATUS)
Values
('ERROR');
Insert into TEMP25
(STATUS)
Values
('ERROR');
Insert into TEMP25
(STATUS)
Values
('ERROR');
Insert into TEMP25
(STATUS)
Values
('NOT_REQUIRED');
Insert into TEMP25
(STATUS)
Values
('NOT_REQUIRED');
Insert into TEMP25
(STATUS)
Values
('PENDING');
Insert into TEMP25
(STATUS)
Values
('PENDING');
Insert into TEMP25
(STATUS)
Values
('ERROR');
Insert into TEMP25
(STATUS)
Values
('NOT_REQUIRED');
Insert into TEMP25
(STATUS)
Values
('ERROR');
Insert into TEMP25
(STATUS)
Values
('INVALID');
Insert into TEMP25
(STATUS)
Values
('INVALID');
Insert into TEMP25
(STATUS)
Values
('PENDING');
Run Code Online (Sandbox Code Playgroud)
我想写一个查询,以便我得到计数
TOTAL_RECORDS TOTAL_PENDING TOTAL_NOT_REQUIRED TOTAL_PENDING
-----------------------------------------------------------------
14 4 3 5
-----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想按顺序和一个查询中的记录,我已尝试使用with table它的子句...是否有任何其他解决方案...并且dnt想要无效的记录
您可以使用SUM/CASE或(SUM/DECODE如果您愿意)
Select
COUNT(*) TOTAL_RECORDS ,
SUM(case when status = 'PENDING' then 1 else 0 END) TOTAL_PENDING,
SUM(case when status = 'NOT_REQUIRED' then 1 else 0 END) TOTAL_NOT_REQUIRED,
SUM(case when status = 'ERROR' then 1 else 0 END) TOTAL_ERROR
FROM temp25
Run Code Online (Sandbox Code Playgroud)
你也可以使用数据透视,但获得计数(*)有点难看
WITH
COUNTS AS(
select *
from (
select status
from TEMP25 t
)
pivot
(
count(status)
for status in ('PENDING' AS TOTAL_PENDING,
'NOT_REQUIRED' AS TOTAL_NOT_REQUIRED,
'ERROR' AS TOTAL_ERROR)
))
SELECT COUNT(*) total_records,
total_pending,
total_not_required,
total_error
FROM temp25,
counts
GROUP BY total_pending,
total_not_required,
total_error
Run Code Online (Sandbox Code Playgroud)