2016-05-13 114 views
1

我有表emp,它由4列組成;SQL更新查詢中的聚合函數

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 

我們需要到最近的日期和相應監督下,加起來所有用戶的來電,並把它們和我們需要每個用戶只有一行。 預期結果我們要找的是

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

請幫幫我。

+2

你也可以發佈預期的結果嗎? –

+0

你是什麼意思的「用戶名應該更新到最近添加的主管」? –

+0

如果表格包含兩個不同主管人的相同用戶名,基於最近日期的結果用戶名應考慮主管和總計呼叫。 – Shivashant

回答

0

使用SUM() Over找到每Namecalls並根據最新date使用Row_Number()窗函數來獲得supervisor

;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

'Supervisor'謝謝它爲我工作 – Shivashant

0

嘗試這個

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

結果:

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

我不認爲這個地址在結果 –