0
我有一些麻煩與此查詢:但是查詢不分組由什麼我想
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
,我希望將這些行由DEAL_NUMMAS
,所以:
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;
它返回這些行我應該只有兩排。
我試圖消除在GROUP BY
表達d.deal_numadm
,但與此錯誤失敗:
ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression"
澄清
以上,DEAL_NUMADM只存在表明他們是返回的每一行都不相同。
我想是這樣的:
NODE_ID SUM(CVA.CVA) SUM(DVA.DVA) DEAL_NUMMAS
MA10700_1731413 955815 1375725 10700
Master10700_1731413 4886330 4318999 10700
與第一行是行1,3,4,5和6
我如何能實現我想要的結果的總和?
「DEAL_NUMMAS」中只有一個值,您爲什麼期望結果中有2行?也許你可以簡單地在GROUP BY – dnoeth
中刪除DEAL_NUMMAS時執行'min(DEAL_NUMMAS)'如果你在選擇列表中有'deal_numadm',你也必須按照它的順序進行分組,如你所見。如果你想爲每個'ntt_id'和'deal_nummas'單獨一行,那麼你必須完全移除'deal_numadm',或者將5個值中的哪一個保留爲一個聚合。如果不知道如何解決這個難題,不能真正建議改變。 –
根據您的預期結果看起來好像按node_id分組可以解決您的問題,並嘗試從group by子句中刪除其他人,除非d.deal_nummas(因爲它是您的預期結果)非常必要,您可以在select中使用MAX函數。當你從group-by中刪除它時,失敗的原因是你需要將它們保留在聚合函數中,或者它們應該出現在group-by子句中。所以明智地計劃。 – pushpraj