2017-11-02 1 views
1

Ich habe diese aktuellen ErgebnisseTag/Monat gefiltert Sub-Abfrage

PersonName Team Daily Amount Date 
    Alex  4   10  2017-01-11 
    Alex  4   10  2017-01-11 
    Alex  4   10  2017-01-11 
    Ben  1   10  2017-02-11 
    Ben  1   10  2017-02-11 
    Ben  1   10  2017-01-11 
    Fred  3   10  2017-01-11 
    Fred  3   10  2017-01-11 
    Fred  3   10  2017-01-11 
    Sam  2   10  2017-02-11 
    Sam  2   10  2017-01-11 
    Sam  2   10  2017-01-11 
    Tom  2   10  2017-01-11 
    Tom  2   10  2017-02-11 
    Tom  2   10  2017-01-11 

Nun, ich bin auf der Suche täglich und Monat so weit Figur in zwei getrennten Spalten zu erstellen.

Ich suche ein Ergebnis wie folgt aus:

PersonName Team Daily Amount Date  Monthly Figure 
    Alex  4   30  2017-01-11  30 
    Ben  1   10  2017-01-11  30 
    Fred  3   10  2017-01-11  30 
    Sam  2   20  2017-01-11  30 
    Tom  2   20  2017-01-11  30 

Bisher habe ich eine Abfrage wie diese, aber ich bin nicht sicher, dass dies der beste Ansatz ist. Es gibt mir andere gruppierte Summenresultate als ich erwartet hatte.

Ich habe versucht, sowohl eine Verbindung Unterabfrage als auch mit Union, aber ich kann nicht ganz bekommen das Ergebnis, das ich will. Kann mir jemand weiter beraten? Dank

SQL FIDDLE - http://sqlfiddle.com/#!6/23bbb/12

+0

Was ist mit "2017-02-11" passiert? –

+0

@GordonLinoff Ich möchte die tägliche bis 2017-01-11, aber zeigen Sie den gesamten Monat insgesamt. Ich kann das Datumsfeld entfernen - es ist nicht wichtig. Es ist nur dort zu demonstrieren, was ich versuche zu erreichen –

Antwort

1

Wenn ich das richtig verstanden, Sie einen Betrag von jeder Person an einem bestimmten Tag verbrachte finden wollen und vergleichen Sie es mit einem Betrag verbringen in diesem Monat

declare @day date = '01-11-17' 

select P.PersonName, 
    P.Team AS [Team], 
    sum(case when date = @day then f.amount end) AS [daily amount] , 
    @day AS [Date], 
    sum(F.Amount) AS [monthly amount] 
from Person P 
join Figure F on P.PersonID =F.PersonFK 
where month(F.date) = month(@day) 
group by P.PersonName, P.Team 

demo

+0

das ist nicht richtig. Zum Beispiel sollte die monatliche Zahl von tom 30 nicht 40 sein. –

+0

@RyanGadsdon es ist richtig für die Daten, die in meiner Demo sind. –

+0

@RyanGadsdon Beachten Sie, dass Sie in Ihren Daten (die Sie in Ihrer Geige bereitstellen) alle Januar-Daten an einem Tag haben, daher würde es keinen Unterschied zwischen monatlichen und täglichen Daten geben. Also habe ich zwei Werte hinzugefügt und Tom hat insgesamt 40 im Januar. –