2011-09-13 13 views
0

これは私が達成しようとしているものです:Column1でグループ化し、Column2にCount(*)を掛ける方法は?

SELECT COUNT(*) * dd.Material_Quantity as [Count], tabSparePart.SparePartName 
FROM   tabDataDetail AS dd INNER JOIN 
         tabSparePart ON dd.fiSparePart = tabSparePart.idSparePart 
WHERE dd.Reused_Indicator = 1 
GROUP BY tabSparePart.SparePartName 
ORDER BY Count DESC, tabSparePart.SparePartName 

はすべてsparepart発生箇所をカウントし、それらに対応するMaterial_Quantity値でそれらを掛けます。 しかし、私は次のエラーを取得:どのように私は両方の値を有意義に掛けることができ

8118: Column 'tabDataDetail.Material_Quantity' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

を?単純なSUMまたはAVGは正しい結果を与えるでしょうか? COUNT(*) * AVG(dd.Material_Quantity) as [Count]

答えて

1

あなたは量の合計を探しているなら、あなたはsumを使用することができます:たとえば

SUM(dd.Material_Quantity) 
+0

うーん、私はとにかくので、私はすべてでCOUNT(*)を選択する必要はありません意味Material_Quantityを取得したいそれは理にかなっている。ありがとうございました。 'Sum'は' Where'-conditionと 'Group-By'にマッチする行だけを合計しますか? –

+0

@Tim Schmelter:これは 'where'と一致する行だけを合計し、' sum'はグループの行のみを対象とします。 – Andomar

+0

多くの行にリンクされたスペアパーツがありますが、material_quantityがnullまたは0であるという問題がありますが、私はあなたの答えを受け入れました。私はそれらを1に変更すると思います。編集:解決済み:私はどこに別の条件を追加するのを忘れてしまった句。 –

関連する問題