2016-05-13 16 views
1

Ich habe Tabelle Emp, die aus 4 Spalten besteht;Aggregat-Funktion in SQL Update-Abfrage

Name Date  Calls Supervisor 
Alwin 10-05-2016 20  Pramod 
Pavan 11-05-2016 10  Steevan 
Amit 12-05-2016 12  Raja 
Alwin 13-05-2016 15  Sagar 

Wir müssen die Anrufe aller Benutzer hinzufügen und legen Sie sie unter dem jüngsten Datum und dem jeweiligen Betreuer und wir brauchen nur eine Zeile pro Benutzer. Das erwartete Ergebnis, was wir suchen, ist

Name Date  Calls Supervisor 
Pavan 11-05-2016 10  Steevan 
Amit 12-05-2016 12  Raja 
Alwin 13-05-2016 35  Sagar 

Bitte helfen Sie mir.

+2

Können Sie auch das erwartete Ergebnis veröffentlichen? –

+0

Was meinen Sie mit "Benutzername sollte auf Zuletzt hinzugefügten Supervisor aktualisiert werden"? –

+0

Wenn die Tabelle zweimal den gleichen Benutzernamen für den verschiedenen Supervisor enthält, sollte im Ergebnis basierend auf dem letzten Datum der Benutzername Supervisor- und Summenaufrufe berücksichtigen. – Shivashant

Antwort

0

Verwenden SUM() Over die Gesamt calls pro Name zu finden und die supervisor Basis zu erhalten über die neuesten date Verwendung Row_Number() Fensterfunktion

;WITH cte 
    AS (SELECT NAME, 
       date, 
       Sum(calls)OVER(partition BY NAME) AS calls, 
       supervisor, 
       Row_number()OVER(partition BY NAME ORDER BY date DESC) Rn 
     FROM yourtable) 
SELECT NAME, 
     date, 
     calls, 
     supervisor 
FROM cte 
WHERE Rn = 1 
+0

Dank Es hat für mich gearbeitet – Shivashant

0

Probieren Sie diese

select Name, Date, SUM(Calls) from Test 
Group By Name, Date 

Ergebnis:

Name Date  SumCalls 
Alwin 05/10/2016 35 
Pavan 05/11/2016 10 
Amit 05/12/2016 12 
+0

Ich denke nicht, dass diese Adresse der 'Supervisor' im Ergebnis –

Verwandte Themen