Sql server 在SQL Server中为记录组添加计数列
我试图用计数列中每一行记录的单个计数来更新现有表 表中有以下需要递增的列:Sql server 在SQL Server中为记录组添加计数列,sql-server,increment,Sql Server,Increment,我试图用计数列中每一行记录的单个计数来更新现有表 表中有以下需要递增的列: MBR_NO, CLAIM_N0, Effective_Dt, incr_count 因此,运行前的示例可能如下所示: MBR_NO | CLAIM_N0 | Effective_Dt | incr_count | -------+----------+----------------+------------+ 1 | 2 | 1/1/2015 | NULL | 1
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\u NO计数,并将递增计数更新为如下所示:
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 |
我需要更改该文件以便稍后处理
我知道这并不复杂,但似乎其他主题提供的解决方案不会进行增量更新。如有任何帮助,将不胜感激。您可以按以下方式查询:
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 |
+--------+----------+--------------+------------+
输出如下:
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 |
+--------+----------+--------------+------------+
您可以按以下方式进行查询:
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 |
+--------+----------+--------------+------------+
输出如下:
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 |
+--------+----------+--------------+------------+
您可以在查询中使用
ROW\u NUMBER()(按MBR分区\u无顺序按有效日期)。
但如果数字发生变化,这有关系吗?i、 在你的例子中,如果你
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
您可以在查询中使用
ROW\u NUMBER()(按MBR分区\u无顺序按有效日期)。
但如果数字发生变化,这有关系吗?i、 在你的例子中,如果你
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
是的,我希望这个数字发生本质上的变化,我正在尝试计算成员记录的数量,并在其他地方的循环处理中使用它,好吧,那就这样吧。我可能会说,只需将其添加到视图中,除非您必须将其放在表中,在这种情况下,触发器可能最好只更新与该MBR_NO关联的行。是的,我希望该数字本质上发生变化。我正在尝试计算成员记录的数量,并在其他地方的循环处理中使用该记录,好的,这样就可以了。我可能会说,只要把它添加到视图中,除非你必须将它放在一个表中,在这种情况下,触发器可能最好只更新与该MBRIO号相关联的行,请在提问时考虑格式化。很难阅读你的样本数据,请在提问时考虑格式化。读取样本数据非常困难。这需要排序。。。在没有排序的情况下可以这样做吗?我们需要提供基于至少一个订单的增量计数。这里的要求似乎是有效的。。。这可以是任何订单或需求,但它必须至少有一个排序列,以生成适当的输出。这需要排序。。。在没有排序的情况下可以这样做吗?我们需要提供基于至少一个订单的增量计数。这里的要求似乎是有效的。。。这可以是任何基于订单或需求的,但它必须至少具有“排序”列才能生成适当的输出