Bonjour,

j'ai une question sur une de mes requêtes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select 
case 
    when d.deal_numadm!=0 and d.deal_numadm is not null 
        then 'MA' || d.deal_nummas || '_' || d.ntt_id 
    when d.deal_numadm=0 or d.deal_numadm is null 
        then 'Master' || d.deal_nummas || '_' || d.ntt_id 
end as node_id, 
sum(cva.cva), sum(dva.dva), d.deal_numadm, d.deal_nummas
from acc_processed_cva cva 
left outer join acc_processed_dva dva on dva.deal_id = cva.deal_id 
join acc_deals d on d.deal_id = cva.deal_id and d.deal_scope='Y' 
join dt_runs r on r.run_id = cva.run_id and r.deal_cnt_id = d.deal_cnt_id 
where r.run_id=57 and d.deal_nummas=10700 and d.ntt_id = 1731413
group by d.ntt_id, d.deal_nummas, d.deal_numadm, d.deal_cnt_id, d.ntt_id;
Dans cette requête, le select d.deal_numadm est juste là pour montrer qu'il est différent dans chacune des lignes retournées par la requête :

NODE_ID SUM(CVA.CVA) SUM(DVA.DVA) DEAL_NUMADM DEAL_NUMMAS
MA10700_1731413 953180 1373440 22012 10700
Master10700_1731413 4886330 4318999 0 10700
MA10700_1731413 1654 1192 12054 10700
MA10700_1731413 4 (null) 83442 10700
MA10700_1731413 14 1093 10775 10700
MA10700_1731413 963 (null) 10779 10700

Ce que je voudrais, c'est une requête qui retourne ça (sans le d.deal_numadm):

NODE_ID SUM(CVA.CVA) SUM(DVA.DVA) DEAL_NUMMAS
MA10700_1731413 955815 1375725 10700
Master10700_1731413 4886330 4318999 10700

avec la 1ere ligne qui soit la somme des lignes 1, 3, 4, 5 et 6 du résultat précédent.

J'ai essayé en enlevant le d.deal_numadm du group by de la requête, mais évidemment ça ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select 
case 
    when d.deal_numadm!=0 and d.deal_numadm is not null 
        then 'MA' || d.deal_nummas || '_' || d.ntt_id 
    when d.deal_numadm=0 or d.deal_numadm is null 
        then 'Master' || d.deal_nummas || '_' || d.ntt_id 
end as node_id, 
sum(cva.cva), sum(dva.dva), d.deal_nummas
from acc_processed_cva cva 
left outer join acc_processed_dva dva on dva.deal_id = cva.deal_id 
join acc_deals d on d.deal_id = cva.deal_id and d.deal_scope='Y' 
join dt_runs r on r.run_id = cva.run_id and r.deal_cnt_id = d.deal_cnt_id 
where r.run_id=57 and d.deal_nummas=10700 and d.ntt_id = 1731413
group by d.ntt_id, d.deal_nummas, d.deal_cnt_id, d.ntt_id;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ORA-00979: not a GROUP BY expression 
00979. 00000 - "not a GROUP BY expression"
C'est possible de faire ce que je veux ?