2017-08-16 92 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

提問時請考慮格式。 IT很難讀取您的示例數據。 – 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日說,它會改變行數爲2017年5月1日行即

MBR_NO  EffectiveDate RowNumber 
------------------------------------ 
2    1/1/2017  1 
2    3/1/2017  2 
2    5/1/2017  3 
+0

是的,我想要的數字基本上改變我試圖計算成員記錄的數量,並在其他地方的循環處理中使用它, –

+0

好吧,那麼工作。我可能會說只是將其添加到視圖中,除非您必須將其放在表中,在這種情況下,觸發器可能最好只更新與該MBR_NO關聯的那些行。 –