我有一个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)
使用Row_number我们可以实现这个
Select *,
ROW_NUMBER()OVER(PARTITION BY id ORDER BY (SELECT NULL))trxn_count
from Transactions
答案 1 :(得分:0)
在 SQL-Server 中,您可以使用 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(id=@id, @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