私は、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
ご覧のとおり、Amount 列の値の一部は £0.00 です。これは、たとえば、寄付者の口座に十分な資金がない場合に発生する可能性があります。
私がやりたいのは、£0.00 以外の支払いの後、または Donor_ID の変更後にリセットされる、連続した £0.00 の支払いの増分カウントを含むフィールドを作成する SQL クエリを作成することです。上記のデータを以下に再現しました。見たいフィールドがあります。
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 プログラミング レベルよりも高度なソリューションが必要になる可能性があると思います。