2016-10-13 2 views
0

아래 코드는 일부 샘플 코드입니다. 일부 쿼리oracle에서 쿼리 집계를 생성하는 방법은 무엇입니까?

예제 테이블에 집계 된 출력을 찾고

col1 col2 
---- ---- 
val1 Fully 
val1 Partial 
val2 NoService 
val2 Partial 
val3 Fully 
val3 NoService 
val3 Fully 
val3 Partial 
val1 Fully 
val2 NoService 

출력

Col1 Fully Partial NoService Total 
---- ----- ------- --------- ----- 
val1  2  1  0   3 
val2  0  1  2   3 
val3  2  1  1   4 

하지 오라클에서이 작업을 수행하는 방법을 잘 기대? 도움을 청하십시오.

답변

2

다음을 시도하십시오 : 당신이 기대 한 결과를 제공 할지라도 동적 인 해결책은 아닙니다. val2에 고정 값이있는 경우에는 동적 방법을 선택해야합니다.

SELECT col1, 
    SUM(CASE WHEN col2 = 'Fully' THEN 1 ELSE 0 END) Fully, 
    SUM(CASE WHEN col2 = 'Partial' THEN 1 ELSE 0 END) Partial, 
    SUM(CASE WHEN col2 = 'NoService' THEN 1 ELSE 0 END) NoService, 
    COUNT(col2) total 
FROM yourTable 
GROUP BY col1 
1

오라클에서는 CASE와 함께 사용하여이 피벗 또는 집계 기능을 수행 할 수 있습니다

SELECT COL1, 
    COUNT(CASE when COL2 = 'FULLY' THEN 1 ELSE 0 END) AS FULLY, 
    COUNT(CASE when COL2 = 'PARTIAL' THEN 1 ELSE 0 END) AS PARTIAL 
FROM TABLE_A A 
LEFT JOIN TABLE_A B 
    on B.COL1 = A.COL1 
GROUP BY COL1 
1

내가 할 수있는 쿼리 위에서

select * from(select nvl(col1,'Total') col1,nvl(col2,'Total') col2,count(1) cnt from mytable group by CUBE(col1,col2)) 
pivot 
(
    sum(cnt) 
    for col2 IN 
       (
        'Fully' AS "Fully", 
        'Partial' AS "Partial", 
        'NoService' AS "NoService", 
        'Total' As "Total" 
       ) 
) 

여기에 오라클이 사용하는 피벗 쿼리 기능을 사용해보십시오 열과 행의 합계를 얻습니다.

귀하의 필요에 따라 검색어를 사용하십시오.

관련 문제