2016-11-10 5 views
0

Ich habe die folgende Tabelle, die mehrere Gerichte in mehreren Mengen für andere DatenSQL-Abfrage Mehrere Summen und Gruppen

[Dishes] 
    Date     | Dish_Id | Quantity | Price | Total 
============================================================================ 
2016-09-09 00:00:00.000   5    1   50.00  50.00 
2016-09-09 00:00:00.000   3    1   30.00  30.00 
2016-09-10 00:00:00.000   10   1   100.00  100.00 
2016-09-09 00:00:00.000   5    1   50.00  50.00 
2016-09-09 00:00:00.000   7    1   70.00  70.00 
2016-09-09 00:00:00.000   7    1   70.00  70.00 
2016-09-09 00:00:00.000   3    1   30.00  30.00 
2016-09-10 00:00:00.000   3    1   30.00  30.00 

Was ich tun möchte, hat eine SQL-Abfrage, die jede eindeutige/verschiedene gericht_id und Summe kombinieren seine äquivalenten Mengen und Gesamt aber in Gruppen an den Datumswert Acording ohne seinen Preis pro Artikel zu beeinflussen wenn Sie also die Abfrage auf dem Tisch liefen über sie folgende Ergebnismengen erzeugen würden:

[Result] 
    Date     | Dish_Id | Quantity | Price | Total 
============================================================================ 
2016-09-09 00:00:00.000   5    2   50.00  100.00 
2016-09-09 00:00:00.000   3    2   30.00  60.00 
2016-09-09 00:00:00.000   7    2   70.00  140.00     
2016-09-10 00:00:00.000   10   1   100.00  100.00 
2016-09-10 00:00:00.000   3    1   30.00  30.00 

im sicher ein GroupBy ist der richtige Ansatz bu t im nicht sicher, wie() mehr Spalten zu summieren und nur die groupby für „Datum“ Wert verwendet, ohne den „Preis“ zu beeinflussen So etwas wie dieses vielleicht

select Date, Dish_Id, sum(quantity), Price, Sum(Total) 
from Dishes 
group by Date, Price 

EDIT ********* *** GOT IT WORKING NOW DANKE JEDER

+0

Sieht aus wie Ihre Abfrage würde ** ** fast Arbeit. Sie müssen der Gruppe dish_ID hinzufügen. und entferne die ?? vom Preis. Wenn das nicht stimmt, was ist los? – xQbert

+0

nop funktioniert nicht, es zeigt nur vollständige Ergebnisse ohne Gruppierung oder Summe –

+0

Sie sollten Ihren Arbeitscode veröffentlichen, um anderen zu helfen. Ich wäre daran interessiert zu wissen, ob Sie gerade die Preisspalte eliminiert haben oder wenn Sie nach ihm gruppiert und Dish_ID .. – xQbert

Antwort

1

Wie wäre es damit?

SELECT DATE 
    ,dish_id 
    ,sum(quantity) AS Quantity_Total 
    ,sum(price * quantity) AS TotalPrice 
FROM table1 
GROUP BY DATE 
    ,dish_id 

enter image description here

Sehen Sie hier für Online-Beispiel/Sandbox http://rextester.com/OLAJ52246

+0

ich habe diese Ausgabe versucht, aber mit den gleichen Ergebnissen, gruppieren die Ergebnisse nicht die gleiche Dish_id, keine Gruppierung überhaupt auch nicht die "SUMME" –

+0

Ich bin mir nicht sicher, was du sagst - Ich habe gerade einen Screenshot hinzugefügt und die Ergebnisse meiner Abfrage sind die gleichen wie Ihre gewünschte Ergebnistabelle, außer ich habe die Preisspalte für die Einfachheit weggelassen gewünschte Ausgabe? – Aron

+0

Wenn Sie den Preis Spalte benötigen, dann verwenden Sie diese Abfrage 'SELECT DATE \t, gericht_id \t, Summe (Menge) AS Quantity_Total , Preis \t, sum (Preis * Menge) AS Totalprice VON table1 G ROUP BY DATE \t, dish_id , Preis "http://rexttester.com/JKCNI91097 – Aron