2016-12-20 5 views
1

Ich habe drei Spalten in meiner Tabelle (Market): Salesman, Sales und Week. Ich möchte die Summe für MTD (Monat bis heute) zusammenrechnen können. In meinem Fall möchte ich die Daten aus der Tabelle vom 11-18-2016 bis zum 18.12.2016 zur Verfügung stellen können. Ich weiß nicht, wie ich die MTD-Spalte in meiner Tabelle formulieren soll. Jede Hilfe wäre willkommen.Summen für MTD anzeigen

select * from Market: 

Salesman    Sales     Week 
Joe     40      12-18-2016 
Mike     27      12-11-2016 
Todd     29      12-04-2016 
Robert    44      11-27-2016 
Tony     15      11-20-2016 
Morgan    60      11-13-2016 
Edwin     25      11-06-2016 
Josh     19      10-30-2016 
Travis    24      10-23-2016 
Wade     35      10-16-2016      

Das Ergebnis Ich benötige:

Select Salesman, Sales as 'This Week', (some formula) as 'MTD' from Market 
where Week = '12-18-2016' 

Salesman    This Week     MTD 
Joe     40      40 
Mike     0      27 
Todd     0      29 
Robert     0      44 
Tony     0      15 
+0

Hat jemand hier Fortschritte? –

Antwort

2

Sie können dies mit Fensterfunktionen tun. Für eine einzelne Woche sollte dies tun:

select m.* 
from (Select Salesman, Sales as "This Week", 
      sum(Sales) over (partition by SalesMan, date_trunc('month', week) 
           order by week) as MTD 
     from Market m 
    ) m 
where Week = '2016-12-18'; -- assumes that the date is stored in a native date/time format 

Die order by in der over Klausel wird nur benötigt, Wochen zu unterstützen, die nicht die letzte Woche sind.

+0

Obwohl es keinen Fehler zurückgibt, gibt es leere Felder zurück. –

+0

@ PLearner. . . Dies setzt voraus, dass "Woche" eine Datums-/Zeitspalte ist (d. H. Nicht als eine Zeichenfolge gespeichert ist). –