2016-07-17 13 views
0

Ich bin es gewohnt, einfache SQL-Abfragen zu schreiben und dann Berichte in Excel zu erstellen, aber in diesem Fall sind die Daten zu groß, um in Excel zu modellieren, aber ich bin mir nicht sicher, wie man an SQL heran kommt Lösung.Wie Verkaufsdaten für komplexe SQL-Bericht zu aggregieren

Ich habe eine Tabelle (ich habe vollen Zugriff auf diese Tabelle, aber nicht die Datenbank, dh ich kann nicht mehr Tabellen hinzufügen). Die Tabelle hat Transaktionen, viele em, über etwa 500 verschiedene Konten. Was ich tun muss, ist einen Bericht erstellen, der ein Konto gibt und dann jedes Produkt Zeile für Zeile gekauft. In der Reihenfolge des größten Kontos zum kleinsten Konto.

ich die Liste der Konten durch den Verkauf erhalten kann:

SELECT Account, SUM(Sales) AS AccountTO 
FROM DataIOS 
WHERE (TradeDate between ? AND ?) AND 
GROUP BY Account 
ORDER BY AccountTO 

aber nicht sicher, wie das 1.-Konto zu erhalten, dann Produktsummen, dann 2.es Konto, Produktsummen, etc., für alle 500 Konten.

Jede Hilfe sehr geschätzt!

+0

Beispieldaten und gewünschte Ergebnisse würden helfen zu vermitteln was du erreichen willst. Außerdem ist SQL normalerweise einer Datenbank zugeordnet. Kennzeichnen Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –

Antwort

0

Versuchen Sie, einen CTE (allgemeiner Tabellenausdruck) mit Fensterfunktionen (dh windowfunc (Spalte) über (Partition durch Spalten). Manche Dinge wie.

;WITH accountTotals (acctId, prodId, acctTotal, ProdTotal) 
AS (
    SELECT AccountId, ProducatID, Sum(Sales) over (Partition By AccountID) as AccountTotal, Sum(Sales) over (Partiton by AccountId, ProductID) as ProdTotal 
    Where TransDate >= @inclusiveStart and TransDate < @exclusiveEnd 
) 
SELECT Distinct AcctID, ProdID, ProdTotal from accountTotals 
ORDER BY acctTotal, acctId, prodId 

Da Sie Excel erwähnen, ich gehe davon aus SQL Server CTE auch in Oracle, aber nicht MySQL (versuchen Sie stattdessen eine korrelierte Unterabfrage)

Verwenden Sie nicht zwischen für Daten.Verwenden Sie explizite Vergleich mit einem halboffenen Intervall (dh Obergrenze ist +1 und Vergleich ist streng weniger als)