2016-05-23 28 views
0

Ich habe eine Abfrage, die ich für die Volusion, die SQL-Fähigkeiten sehr begrenzt ist, wie ich kann nicht verwenden, temporäre Tabellen oder Variablen ... so wie ich normalerweise versuchen würde Mach diese Aufgabe.SQL-Summe nach Gruppe von

aber ich habe diese Abfrage, die mir die Informationen gibt, die ich brauche, aber ich muss damit in Excel nach dem Ausführen arbeiten ... und ich möchte die Abfrage erhalten, um mir die Ergebnisse zu erhalten, die ich brauche.

Was ich letztlich brauche, ist die Kosten/Gewinn von google_gender und von rep ... summiert. Gibt es eine Möglichkeit, dies ohne Variablen oder temporäre Tabellen zu erreichen?

hier meine aktuelle Abfrage:

SELECT 
    Products_Joined.Google_Gender, 
    REPLACE(REPLACE(REPLACE(REPLACE(Customers.SalesRep_CustomerID,379646,'Dan'),658024,'Owen'),643352,'Mary'),584310,'Pete') as SalesRep, 
    SUM(OrderDetails.ProductPrice)*OrderDetails.Quantity as TotalSold, 
    SUM(OrderDetails.Vendor_Price)*OrderDetails.Quantity as VendorCost, 
    SUM(OrderDetails.ProductPrice)*OrderDetails.Quantity-(OrderDetails.Vendor_Price)*OrderDetails.Quantity as Profit 
FROM 
    Products_Joined, OrderDetails, Orders, Customers 
WHERE 
    Products_Joined.ProductCode=OrderDetails.ProductCode 
    AND OrderDetails.OrderID=Orders.OrderID 
    AND Orders.CustomerID=Customers.CustomerID 
    AND Orders.OrderDate BETWEEN '05/01/16 00:00' and '05/31/16 23:59' 
    AND Customers.SalesRep_CustomerID in ('379646' , '658024' , '643352' , '584310') 
    AND Orders.OrderStatus <> 'Cancelled' 
GROUP BY  
    Products_Joined.Google_Gender, 
    OrderDetails.Quantity, 
    OrderDetails.Vendor_Price, 
    OrderDetails.ProductPrice, 
    Customers.SalesRep_CustomerID 

, da die Abfrage enthält Artikel Informationen von Orderdetails zu ziehen, den „Verkaufspreis“ es Zeilen aus jeder Bestellung # und sku in der resultierenden Datei zu erhalten, die ich don brauche ich nicht, ich brauche nur den Gesamtbetrag von jedem google_gender, durch rep. und es wird nur die 4 Wiederholungen sein :)

+0

wäre einfacher zu beantworten, wenn Sie einige Beispieldaten geben und beschreiben, was das Problem mit Ihrer aktuellen Abfrage ist – swe

+2

Sicher kann es getan werden. Hier ist es großartig, eine Antwort zu bekommen. https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ Auch sollten Sie wirklich anfangen, ANSI-92 Stil Joins zu verwenden. Sie gibt es schon seit über 20 Jahren. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –

+0

swe, die aktuelle Abfrage funktioniert ordnungsgemäß. aber ich möchte die Daten in SQL summieren, so dass ich nach dem Ausführen des Berichts keine Arbeit in Excel ausführen muss. – M21

Antwort

2

Um die SUMME pro Geschlecht/rep zu erhalten, müssen Sie die anderen Gruppierungsstufen loswerden. Ohne irgendein Schema oder Daten rate ich nur, aber das könnte dir geben, was du willst;

SELECT 
    Products_Joined.Google_Gender, 
    REPLACE(REPLACE(REPLACE(REPLACE(Customers.SalesRep_CustomerID,379646,'Dan'),658024,'Owen'),643352,'Mary'),584310,'Pete') as SalesRep, 
    SUM(OrderDetails.ProductPrice*OrderDetails.Quantity) as TotalSold, 
    SUM(OrderDetails.Vendor_Price*OrderDetails.Quantity) as VendorCost, 
    SUM(OrderDetails.ProductPrice*OrderDetails.Quantity)-SUM(OrderDetails.Vendor_Price*OrderDetails.Quantity) as Profit 
FROM 
    Products_Joined, OrderDetails, Orders, Customers 
WHERE 
    Products_Joined.ProductCode=OrderDetails.ProductCode 
    AND OrderDetails.OrderID=Orders.OrderID 
    AND Orders.CustomerID=Customers.CustomerID 
    AND Orders.OrderDate BETWEEN '05/01/16 00:00' and '05/31/16 23:59' 
    AND Customers.SalesRep_CustomerID in ('379646' , '658024' , '643352' , '584310') 
    AND Orders.OrderStatus <> 'Cancelled' 
GROUP BY  
    Products_Joined.Google_Gender, 
    Customers.SalesRep_CustomerID 

Beachten Sie, dass sich alle OrderDetails innerhalb der SUM-Funktionen befinden.

+0

Danke, ich habe das zuerst versucht .... das ist, was ich bekomme, wenn ich das versuche: Ihr SQL ist ungültig: Die Spalte 'OrderDetails.Quantity' ist in der Auswahlliste ungültig, weil sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel. – M21

+1

Ich habe Ihre SUM-Ausdrücke geändert, nicht nur die GROUP BY-Klausel. –

+0

wow ok, ich sehe es jetzt. das funktioniert, das ist was ich brauchte, vielen Dank! – M21