2012-04-02 11 views
0

I Datensatz verfolgt habe verwendenWie group by- und having zusammen

id name units release_date 
1 salil 1 2012-04-02 
2 salil 2 2012-03-21 
3 salil 3 2012-04-02 
4 salil 4 2012-03-02 
5 salil 5 2012-04-02 
6 xyz  1 2012-04-01 
7 xyz  2 2012-03-30 
8 xyz  3 2012-03-30 
9 xyz  4 2012-04-01 

I die Summe einer Einheit soll für jeden Namen für maximales Datum. so etwas wie follwing

name units  Max(release_date) 
salil 9   2012-04-02 
xyz 5   2012-04-01 

Ich versuche folgende, aber es funktioniert nicht

SELECT name, MAX(release_date) as date, sum(units) as units FROM reports 

GROUP BY name; 
+0

Hier 'date' ist ein Schlüsselwort in SQL, so wird es nicht verwenden als Feldname. Ändern Sie es und versuchen Sie es erneut – Ben

+0

'artist_name' ist nicht in Ihrem definierten Datensatz. – RedFilter

+0

@ ben, @ RedFilter: - Es ist nur Typo ..... Ich bearbeitet es obwohl – Salil

Antwort

0

unten Versuchen:

SELECT name, sum(units) as units 
    FROM reports as r 
    LEFT JOIN (select max(date) as maxdate from reports group by name) as mr 
    ON r.date=mr.maxdate 
    WHERE artist_name='Pacer1' GROUP BY name; 
+0

Nein das gibt mir nur einen Datensatz ich will für alle Namen – Salil

+0

Ich bin Zweifel voll über artist_name = 'Pacer1', warum Sie Haben Sie das in Ihrer Anfrage in Ihrem Post verwendet? vielleicht liegt das daran, dass es einen einzelnen Namen gibt. Bitte entfernen Sie es, wenn Sie nicht brauchen –