МЕТОД 1 Пожалуйста, проверьте SQLFIDDLE
FIRST STEP
Отдельно узнать количество для активных и неактивных участков
SELECT 'ACTIVE' "STATUS",NVL(REGION,'TOTAL') REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
where STATUS like 'ACTIVE'
GROUP BY ROLLUP (REGION)
SELECT 'INACTIVE' "STATUS",NVL(REGION,'TOTAL') REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
where STATUS like 'INACTIVE'
GROUP BY ROLLUP (REGION)
В этих запросах мы используем GROUP BY ROLLUP так последней строки мы получим сумму все остальные ряды
SECOND STEP
РЕГИСТРИРУЙТЕСЬ ОБА это опрашивает И использовать Pivot
SELECT NVL(STATUS,'GRAND TOTAL') STATUS,SUM(EAST) EAST,SUM(NORTH) NORTH,SUM(SOUTH) SOUTH,SUM(TOTAL) TOTAL from
(SELECT 'ACTIVE' "STATUS",NVL(REGION,'TOTAL') REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
where STATUS like 'ACTIVE'
GROUP BY ROLLUP (REGION)
union
SELECT 'INACTIVE' "STATUS",NVL(REGION,'TOTAL') REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
where STATUS like 'INACTIVE'
GROUP BY ROLLUP (REGION)
)pivot (SUM(REGCOUNT) FOR (REGION) IN ('EAST' EAST,'NORTH' NORTH,'SOUTH' SOUTH,'TOTAL' TOTAL))
GROUP BY ROLLUP (STATUS)
В стержне мы должны дать регионам, которые присутствуют в таблице
МЕТОД 2SQLFIDDLE
другой путь для выполнения того же выше запроса мы указали statu Трудно шнуровой «Активный» и «неактивный» вместо того, что мы можем использовать следующий запрос
SELECT nvl(STATUS,'GRAND_TOTAL') STATUS,sum(EAST)EAST,sum(NORTH)NORTH,sum(SOUTH)SOUTH,sum(TOTAL) TOTAL from
(SELECT STATUS,REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
GROUP BY (STATUS,REGION)
union
SELECT STATUS,'TOTAL'REGION,
COUNT(REGION) REGCOUNT
FROM TEMPPIVOTTEST
GROUP BY (STATUS)
)pivot (SUM(REGCOUNT) FOR (REGION) IN ('EAST' EAST,'NORTH' NORTH,'SOUTH' SOUTH,'TOTAL' Total))
group by rollup (status)
оракул 10 г поворота не будет работать таким образом, мы можем использовать в сазе
select nvl(status,'total')status,SUM(NORTH) NORTH,SUM(SOUTH)SOUTH,SUM(EAST)EAST,sum(TOTAL)TOTAL from (select status,
sum(case when region = 'NORTH' then 1 else 0 end) as "NORTH",
sum(case when region = 'SOUTH' then 1 else 0 end) as "SOUTH",
sum(case when region = 'EAST' then 1 else 0 end) as "EAST",
sum(case when region in('') then 0 else 1 end) as "TOTAL"
from TEMPPIVOTTEST
group by status
)group by ROLLUP (STATUS)
Я хочу для отображения итогового общего количества, а также количества колумнов – Lijo