2016-11-22 6 views
-1

Ich habe Service, der mehrere Aufgaben hat. Jede Aufgabe hat eine Deduktion für einen bestimmten Vektor.Summe durch multiple Spalte

Ich hoffe, für alle Vector Deduction% von jedem Vector_id und von jedem Service abzufragen.

Zum Beispiel ich will:

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

Ich bestellte bekommen haben die Spalten Ich wünsche durch Abzug zu summieren, kann jedoch nicht die richtige Gruppe für Anweisung erhalten:

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; 

Hier sind die Tabellen I bin mit und einige Daten: http://www.sqlfiddle.com/#!9/ea5f70

+0

Könnte ich Ihnen helfen? – rbr94

+0

Es ist ein wenig seltsam, dass die Sätze "SUM" und "GROUP BY" beide in Ihrer Anfrage fehlen. – Strawberry

+0

Es wäre schön, wenn es überhaupt eine Reaktion auf Kommentare und Antworten geben würde – rbr94

Antwort

0

Versuchen Sie folgendes:

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 
... 

Beachten Sie, dass Sie immer Group By alle Spalten verwenden sollten, die Sie in Select verwenden, außer für aggregierte Werte wie COUNT oder .

+0

Danke für Ihre Hilfe, aber ich habe versucht Erhalten Sie für jeden Service für jeden Vektor eine Summe aller Abzüge. – user3770935

+0

@ user3770935 Sie können den 'Task.name' aus dem' GROUP BY' entfernen, wenn dies das Problem löst – rbr94