用SUM

2011-12-23 51 views
1

多個不同的價值觀,我有一個表,該表數據是像用SUM

userID  name  amount Date 
    1  mark  20  22-10 
    1  mark  30  22-10 
    2  kane  50  22-12 
    2  kane  60  22-12 
    3  mike  60  22-10 

日期是唯一的與用戶ID +用戶名+日期

但組合爲更多的則10萬點的記錄有可能重複的最新記錄但枯萎其他用戶ID和名稱不

現在我想輸出像

userID  name  amount Date 
    1  mark  50  22-10 
    2  kane  110  22-12 
    3  mike  60  22-10 

,如果我嘗試組使用ID,姓名,金額(量),迄今爲止,它返回多行並回答DISTICT和SUM等等等等的不正確

我曾嘗試過各種組合,但沒有成功 任何解決方案 謝謝

回答

7

您通常使用GROUP BY由一個或多個其他領域聚集一個或多個字段。

SELECT userID, Name, SUM(amount), MIN(date) 
FROM YourTable 
GROUP BY 
     userID, Name 

從MSDN:Aggregate functions

集合函數上執行的一組值的計算和 返回單個值。除COUNT之外,聚合 函數忽略空值。聚合函數通常與SELECT語句的GROUP BY子句一起使用。

一些典型的聚集函數是

  • SUM
  • MIN
  • AVG
  • ...

從MSDN:GROUP BY

按照SQL Server 2008 R2中一個或多個列或表達式的值 將選定的一組行組合到一組彙總行中。每個組返回一行 。 SELECT子句 列表中的聚合函數提供有關每個組的信息,而不是單個行的 。

+0

您好我已經更新了我的發言請關注一下吧謝謝 – kawafan 2011-12-23 02:27:16

+0

@ user353600 - 你必須做出選擇這裏您希望每行的日期和日期使用聚合函數。對於你給定的例子,它並不重要,因爲所有日期(對於每個組)都是相同的。您可以簡單地將「MIN(Date)」添加到select語句。 – 2011-12-23 02:29:12

+1

-1:因爲過於詳細而且聰明。不,等等,那是我。 +1不僅是正確的,而且在你的回答中實際上非常翔實。 – MatBailie 2011-12-23 02:45:22

2
select 
    userId, name, sum(amount) as amount 
from 
    table 
group by 
    userId, name 
2

你不想DISTINCT這裏,而是GROUP BY與骨料SUM()

SELECT 
    userID, 
    name, 
    SUM(amount) AS amount 
FROM tbl 
GROUP BY userID, name