2017-08-17 38 views
1

這是我的表入門總和由不同的領域在SQL Server分組

PayerID PaymentID Amount 

    1 8386 5827.14 
    1 8386 5827.14 
    1 8386 5827.14 
    1 8387 4464.68 
    1 8387 4464.68 
    1 8387 4464.68 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 
    2 8388 1482.57 

我想量不同PaymentID組的總和PayerID像下面

payerID AmountSum 
1  5827.14 + 4464.68 
2   1482.57 
+0

'SELECT SUM(不同量) FROM表GROUP BY payerID' –

回答

4

使用SUM(DISTINCT)

SELECT PayerId, SUM(DISTINCT Amount) AS AmountSum 
FROM tab 
GROUP BY PayerId; 

此解決方案假定Amount對於不同的是唯一的。


更一般的方法:

SELECT PayerId, SUM(Amount) AS AmountSum 
FROM (SELECT DISTINCT PayerID, PaymentID, Amount 
     FROM tab) sub 
GROUP BY PayerId 
+0

有些時候金額相同,付款ID將有所不同。像8386和8387可以有5827.14的金額,所以它應該基於PaymentID – Niyas

+0

thnx這會做.. – Niyas

+0

@尼亞斯你可以接受我的回答(http://meta.stackexchange.com/questions/5234/how-does-如果你的問題已經解決,接受一個答案/ 5235#5235) – lad2025

0

可以查詢使用ROW_NUMBER如下:如下面

Select PayerId, sum(amount) from (
    Select *, RowN = Row_Number() over(partition by Payerid, PaymentId, Amount order by Amount) from #payerdata 
) a 
where a.RowN = 1 
group by PayerId 

輸出:

+---------+-----------+ 
| PayerId | AmountSum | 
+---------+-----------+ 
|  1 | 10291.82 | 
|  2 | 1482.57 | 
+---------+-----------+