2017-08-16 1 views
-1

既存のテーブルを、カウント列の各行のレコードの個数で更新しようとしています。レコードグループのSQL Serverでのカウント列の追加

テーブルがインクリメントする必要がある次の列があります。

MBR_NO, CLAIM_N0, Effective_Dt, incr_count 

ので、サンプルは、実行前に、次のようになります。

MBR_NO | CLAIM_N0 | Effective_Dt | incr_count | 
-------+----------+----------------+------------+ 
1  | 2  | 1/1/2015  | NULL  | 
1  | 4  | 5/5/2015  | NULL  | 
1  | 5  | 6/7/2016  | NULL  | 
1  | 7  | 8/7/2016  | NULL  | 
2  | 2  | 4/3/2015  | NULL  | 
2  | 5  | 5/21/2015  | NULL  | 
3  | 8  | 3/27/2015  | NULL  | 

私はMBR_NOでカウントし、更新したいですIncr_countはこのように見て:

MBR_NO | CLAIM_N0 | Effective_Dt | incr_count | 
-------+----------+----------------+------------+ 
1  | 2  | 1/1/2015  | 1   | 
1  | 4  | 5/5/2015  | 2   | 
1  | 5  | 6/7/2016  | 3   | 
1  | 7  | 8/7/2016  | 4   | 
2  | 2  | 4/3/2015  | 1   | 
2  | 5  | 5/21/2015  | 2   | 
3  | 8  | 3/27/2015  | 1   | 

私は後の処理のために提出されたものに変更する必要がありますに。

私はこれが複雑ではないことを知っていますが、他のトピックでは、段階的に更新されないソリューションが提供されているようです。どんな助けもありがとう。

+0

質問する際にフォーマットを検討してください。あなたのサンプルデータを読むのは本当に難しいです。 – NonProgrammer

答えて

0

あなたは以下のように問い合わせることができます:以下のように

Select MBR_NO, CLAIM_N0, Effective_Dt, 
    incr_count = count(MBR_NO) over(Partition by MBR_NO order by Effective_Dt) 
from yourtable 

出力時:

+--------+----------+--------------+------------+ 
| MBR_NO | CLAIM_N0 | Effective_Dt | incr_count | 
+--------+----------+--------------+------------+ 
|  1 |  2 | 2015-01-01 |   1 | 
|  1 |  4 | 2015-05-05 |   2 | 
|  1 |  5 | 2016-06-07 |   3 | 
|  1 |  7 | 2016-08-07 |   4 | 
|  2 |  2 | 2015-04-03 |   1 | 
|  2 |  5 | 2015-05-21 |   2 | 
|  3 |  8 | 2015-03-27 |   1 | 
+--------+----------+--------------+------------+ 
+0

トリックをやっているようですが、感謝Kannan Kandasamy! –

0

あなただけ

ROW_NUMBER() OVER (PARTITION BY MBR_NO ORDER BY Effective_DT).

とクエリでこれを行うことができますが、それは問題ありません番号が変わったら?つまり、あなたの例では、あなたは

MBR_NO  EffectiveDate RowNumber 
------------------------------------ 
2    1/1/2017  1 
2    5/1/2017  2 

があった場合は、あなたが言う2017年3月1日の発効日に行を挿入した場合には、

MBR_NO  EffectiveDate RowNumber 
------------------------------------ 
2    1/1/2017  1 
2    3/1/2017  2 
2    5/1/2017  3 
すなわち2017年5月1日の行の行番号を変更します
+0

はい番号を本質的に変更したいメンバレコードの数を数えようとしていて、ループ処理でそれを他の場所で処理しようとしていますが、 –

+0

でもうまくいきます。私はたぶんテーブルを持っていなければそれをビューに追加すると言うでしょう。その場合、そのトリガはそのMBR_NOに関連付けられた行だけを更新するのが最善であるかもしれません。 –

関連する問題