我正在使用 SQL Server 2005 处理 Raiser's Edge 数据库。我编写的 SQL 将生成一个包含直接借记分期付款详细信息的临时表。下面是一个小表格,其中包含我要问的问题的关键变量,以及一些虚构的数据:
Donor_ID Instalment_ID Instalment_Date Amount
1234 1111 01/01/2011 £5.00
1234 1112 01/02/2011 £0.00
1234 1113 01/03/2011 £5.00
1234 1114 01/04/2011 £5.00
1234 1115 01/05/2011 £0.00
1234 1116 01/06/2011 £0.00
2345 2111 01/01/2011 £0.00
2345 2112 01/02/2011 £5.00
2345 2113 01/03/2011 £5.00
2345 2114 01/04/2011 £0.00
2345 2115 01/05/2011 £0.00
2345 2116 01/06/2011 £0.00
正如您将看到的,金额列中的一些值为 0.00 英镑。例如,当捐赠者的账户资金不足时,就会发生这种情况。
我想做的是编写一个 SQL 查询,该查询将创建一个字段,其中包含连续 0.00 英镑付款的增量计数,在非 0.00 英镑付款或 Donor_ID 更改后重置。我在下面复制了上面的数据,带有我想看的字段。
Donor_ID Instalment_ID Instalment_Date Amount New_Field
1234 1111 01/01/2011 £5.00
1234 1112 01/02/2011 £0.00 1
1234 1113 01/03/2011 £5.00
1234 1114 01/04/2011 £5.00
1234 1115 01/05/2011 £0.00 1
1234 1116 01/06/2011 £0.00 2
2345 2111 01/01/2011 £0.00 1
2345 2112 01/02/2011 £5.00
2345 2113 01/03/2011 £5.00
2345 2114 01/04/2011 £0.00 1
2345 2115 01/05/2011 £0.00 2
2345 2116 01/06/2011 £0.00 3
为了帮助澄清我在寻找什么,我认为我想要做的将类似于足球队成绩列表中的连胜场。例如:
Opponent Score Winning_Streak
Arsenal 1-0 1
Liverpool 0-0
Swansea 3-1 1
Chelsea 2-1 2
Fulham 4-0 3
Stoke 0-0
Man Utd 1-3
Reading 2-1 1
我考虑了各种选择,但没有取得任何进展。除非我遗漏了一些明显的东西,否则我认为可能需要比我当前的 SQL 编程水平更高级的解决方案。