2017-10-16 1 views
1

이 쿼리를 실행하는 동안 GRAND TOTAL 열이 비어 있습니다 (ORACLE 11G).ORACLE 11G에 열 합계를 표시 할 수 없습니다.

QUERY : 'ABC'행 'THREE_DAYS'항목에 해당하는 값이

 
select NVL(TO_CHAR(APPROVER_EMPLOYEE_NAME), 'Grand Total') as EMPLOYEE_NAME, 
SUM(ONE_DAY) one_day, 
SUM(TWO_DAYS) TWO_DAYS , 
SUM(THREE_DAYS) THREE_DAYS, 
SUM(ONE_DAY + TWO_DAYS + THREE_DAYS) TOTAL 
from ic_request 
group by rollup (APPROVER_EMPLOYEE_NAME); 
EMPLOYEE_NAME   ONE_DAY  TWO_DAYS  THREE_DAYS  TOTAL 
-------------------------------------------------------------------------- 
abc      271   64  
xyz      60   09    01  
-------------------------------------------------------------------------- 
Grand Total    331   73    01 

없다. 사람은 행 abc에 대한 THREE_DAYS 열이 null 때문입니다 전체 행>

답변

3

를 합산 'TOTAL'열을 표시하는 데 도움을 주시기 바랍니다 수 있습니다. COALESCE을 사용하면 null을 0으로 만들고 추가 작업을 올바르게 수행 할 수 있습니다.

쿼리

select NVL(TO_CHAR(APPROVER_EMPLOYEE_NAME), 'Grand Total') as EMPLOYEE_NAME, 
SUM(COALESCE(ONE_DAY, 0)) one_day, 
SUM(COALESCE(TWO_DAYS, 0)) TWO_DAYS , 
SUM(COALESCE(THREE_DAYS, 0)) THREE_DAYS, 
SUM(COALESCE(ONE_DAY, 0) + COALESCE(TWO_DAYS, 0) + COALESCE(THREE_DAYS, 0)) TOTAL 
from ic_request 
group by rollup (APPROVER_EMPLOYEE_NAME); 
+0

그것은 "행 abc 방송에 대한 THREE_DAYS 열이 null"하지만 때문에 모든 단일 레코드 중 하나 ONE_DAY 또는 TWO_DAYS 또는 THREE_DAYS가 null하지 때문입니다. 따라서 ONE_DAY + TWO_DAYS + THREE_DAYS는 모든 레코드에 대해 널이되므로 null 합계입니다. 이 외에도 귀하의 대답은 정확합니다. –

관련 문제