2017-10-16 1 views
1

Lors de l'exécution de cette requête, la colonne GRAND TOTAL est vide (ORACLE 11G).Impossible d'afficher le total des colonnes dans ORACLE 11G

QUERY:

 
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 

Il n'y a pas de valeur correspondant à 'abc' ligne et la colonne 'THREE_DAYS'. Quelqu'un peut-il s'il vous plaît aider à afficher la colonne « TOTAL », qui résume la ligne totale>

Répondre

3

Il est parce que THREE_DAYS colonne pour la ligne abc est nulle. Vous pouvez simplement utiliser COALESCE pour rendre le zéro à zéro et faire l'addition correctement.

Recherche

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

Ce n'est pas parce que « colonne THREE_DAYS pour la ligne abc est nulle », mais parce que dans chaque dossier soit ONE_DAY ou TWO_DAYS ou THREE_DAYS est nulle. Donc ONE_DAY + TWO_DAYS + THREE_DAYS devient nul pour chaque enregistrement, d'où les sommes nulles. En dehors de cela, votre réponse est correcte. –