2016-03-19 3 views
0
SELECT idteam, 
     job, 
     price, 
     COUNT('X') as INFORMS, 
     SUM(COUNT('X') * price) as TOTAL 
FROM REP 
JOIN COSTS ON (job = categ AND to_number(to_char(REP,'YYYY')) = year) 
GROUP BY idteam, job, price, TOTAL 
ORDER BY IDTEAM; 

GROUP BYでTOTALを記述すると、エラーが発生する理由はわかりません。識別子が無効です。SQLでグループ内の和を使用する方法

どうすれば解決できるかわかりません。

ありがとうございました。

+0

なぜ集計をグループリストで使用しようとしていますか?その合計がグループに属する行にあるので、それは意味をなさない。また、集計をネストしているのはなぜですか?サンプルのソースデータと望ましい結果を表示します。 –

+0

クエリが多くの問題を抱えているため、いくつかのサンプルデータを提供することができます。 – trincot

+0

最後に、回答として使用しているRDMSは、必要なSQLダイアレクトに合わせます。 – Parfait

答えて

0

コラム「TOTALは、」SUMの別名(COUNTを(」ですX ')*価格)。 GROUP BY句の列識別子として使用することはできません。 GROUP BY SUM(COUNT( 'X')* price)は、グルーピング時に「TOTAL」が不明であるか列ではないために指定する必要があります。 GROUPINGを使用した後は、HAVING節の「TOTAL」を参照できます。 いずれの場合でも、使用しているSQLのバージョン/タイプは許可されていません。

さらに、「X」をカウントする理由は何ですか? Xは固定値で、列には依存しません。各行を数えたい場合は、単にCount(1)またはCount(*)を使用します。また、合計を計算する必要はありません。 COUNTは既に合計されています。

REPとCOSTSの両方の構造を転記する必要があります。リンクされた画像には、作成したクエリをサポートするのに十分な情報がありません。

select 
    idteam, 
    -- job, /* not selected since it would need to be grouped*/ 
    sum(price) as 'theSUM' 
from REP 
join COSTS 
    on REP.categ = COSTS.job 
    and COSTS.year = 2016 
group by idteam 
order by idteam 
+0

ありがとう!それが私の必要なものです。カウントは私を混乱させる..笑 – Dan

0

私の悪い説明は申し訳ありません。

価格と仕事は関連しています。たとえば、ジョブ1の価格は30、ジョブ2の価格は56などです。

各IDチームの合計金額を取得したいとします。例えば

:仕事が含まれている価格は、他のテーブルにあるので、登録しようと、私は別のテーブルを使用し

(categは) enter image description here

関連する問題