2015-10-06 70 views
1

我有一個ID,交易和這些交易日期的列表。我想創建每個ID中每個事務的計數。通過ID運行總計行數

出發表我是看起來像這樣:

id trxn_dt trxn_amt 

1 10/31/2014 58 

1 11/9/2014 34 

1 12/10/2014 12 

2 7/8/2014 78 

2 11/20/2014 99 

3 1/5/2014 120 

4 2/17/2014 588 

4 2/18/2014 8 

4 3/9/2014 65 

4 4/25/2014 74 

,我想最終的結果看起來是這樣的:

id trxn_dt trxn_amt trxn_count 

1 10/31/2014 58 1 

1 11/9/2014 34 2 

1 12/10/2014 12 3 

2 7/8/2014 78 1 

2 11/20/2014 99 2 

3 1/5/2014 120 1 

4 2/17/2014 588 1 

4 2/18/2014 8 2 

4 3/9/2014 65 3 

4 4/25/2014 74 4 

Count(distinct(id))只會給我的總體數量每個ID在每個新ID處重新啓動,而不是每個ID的運行總數。

謝謝!

+0

請編輯併爲您正在使用的特定數據庫添加標籤。 –

回答

0

SQL-服務器您可以在以下使用ROW_NUMBER

SELECT id, 
     trxn_dt, 
     trxn_amt, 
     ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Id, trxn_dt) AS trxn_count 
FROM StarningTable 

的MySQL你可以做以下幾點:

SELECT 
    t.id, 
    t.trxn_dt, 
    t.trxn_amt, 
    @cur:= IF([email protected], @cur+1, 1) AS RowNumber, 
    @id := id 
FROM 
    StarningTable t 
CROSS JOIN 
    (SELECT @id:=(SELECT MIN(id) FROM StarningTable t), @cur:=0) AS init 
ORDER BY 
    t.id 
0

使用ROW_NUMBER我們可以做到這一點

Select *, 
ROW_NUMBER()OVER(PARTITION BY id ORDER BY (SELECT NULL))trxn_count 
from Transactions