2016-11-22 22 views
-1

私は複数のタスクを持つサービスを持っています。各タスクは、特定のベクトルに対して減算を行う。複数の列で合計

私は、各Vector_idと各サービスごとに、すべてのVector Deduction%を照会したいと考えています。

は、例えば私がしたい:私は、私はにより控除を合計したい列を命じ持っている

Service | Vector | Deduction % 
--------------------------------------- 
    SM  |  10  |  5 
    SM  |  11  |  10 
    .... 
    ES  |  10  |  5  
    .... 

しかし文で適切なグループを取得することはできません。ここで

Select 
Service.name AS ServiceName, 
Task.name AS TaskName, 
Deduction.Vector_id AS DeductionVector, 
Deduction.deduction AS DeductionPercentage 
FROM 
Task JOIN Service ON 
Service.id = Task.Service_id 
JOIN Deduction ON 
Deduction.Task_id = Task.id  
ORDER BY ServiceName, DeductionVector; 

は、表Iは、使用していくつかのデータています: http://www.sqlfiddle.com/#!9/ea5f70

+0

お手伝いできますか? – rbr94

+0

「SUM」と「GROUP BY」というフレーズが両方とも質問に表示されないというのは少し不思議です – Strawberry

+0

コメントと回答の反応があった場合、それはいいでしょう – rbr94

答えて

0

はこれを試してみてください:

Select 
    Service.name AS ServiceName, 
    Task.name AS TaskName, 
    Deduction.Vector_id AS DeductionVector, 
    SUM(Deduction.deduction) AS DeductionPercentage 
... 
GROUP BY Service.name, Task.name, Deduction.Vector_id 
... 

COUNTまたはSUMなどの集計値を除いて、Selectで使用するすべての列は、常にGroup Byにする必要があります。

+0

助けてくれてありがとうございました。各サービスごとに各ベクトルのすべての控除合計を取得します。 – user3770935

+0

@ user3770935これが問題を解決すれば 'Task.name'を' GROUP BY'から削除できます – rbr94

関連する問題