2016-05-29 13 views
0

私はこのようなSQLを持っている:Oracle SQL - 集計関数を分析関数とグループ化しますか?

SELECT 
    TO_CHAR(dateinvoiced, 'YYYY') AS year, 
    TO_CHAR(dateinvoiced, 'MM') AS month,  
    name, 
    SUM(reste) OVER (PARTITION BY name, ad_org_id) AS tot_reste_client, 
    nameregion AS region 
FROM 
    table 
GROUP BY 
    TO_CHAR(dateinvoiced, 'YYYY'), 
    TO_CHAR(dateinvoiced, 'MM'),  
    name, 
    nameregion 
ORDER BY name; 

私はGROUP BY句で、それを入れてみました取得し、私はこのようなエラーが出る「グループの機能ではありません」、HAVING、それが「ウィンドウ関数である私に教えて使用してみましたここでは許可されません "。

SELECT 
    TO_CHAR(dateinvoiced, 'YYYY') AS year, 
    TO_CHAR(dateinvoiced, 'MM') AS month,  
    name, 
    SUM(SUM(reste)) OVER (PARTITION BY name, ad_org_id) AS tot_reste_client, 
    nameregion AS region 
FROM 
    table 
GROUP BY 
    TO_CHAR(dateinvoiced, 'YYYY'), 
    TO_CHAR(dateinvoiced, 'MM'),  
    name, 
    nameregion 
ORDER BY name; 

を:

は私が12

+0

FROM t – Mihai

答えて

2

分析関数が後GROUP BY/HAVING計算されているので、通常、あなたがresteに集計を追加できるOracleを使用しています?、解決策を見つけることができませんでしたしかし、これはまた、ad_org_idのために失敗するはずです。これはGROUP BYにはありません。おそらくMIN(ad_org_id)を使用できます。

+0

サブクエリを使用すると、同じエラー「ORA-00979:GROUP BY式ではありません」 –

+1

@IsmailSensei:MIN(ad_org_id)を使用すると、 '(または' ad_org_id'をGROUP BYに追加すると)エラーは発生しませんが、これがあなたが望むものかどうかわかりません。 – dnoeth

+0

問題は、私がad_org_idを忘れてしまったことです。私はMINを使用しませんでした。ちょうどGROUP BYにad_org_idを追加しました。ありがとう。 –

関連する問題