使用SQLServer 2017,我有一个我想自动为每个ID增量的表。示例表A有列
策略ID,索赔ID,tranid
具有以下值
abc123,111,1
当另一行被插入/添加的tranid将显示2,依此类推,但是如果策略ID是不同的,请说ABC456,那么预期的tranid应该是1,但是我的表格只是继续增加而不是policy policy。
div class =" ans">您正在尝试创建一个序列,并且不应存储在表中。
尝试创建视图:
create vw_xxx as
(
select PolicyID, ClaimID
, TranId = row_number() over (partition by PolicyID order by ClaimID)
from tableXXX
)
这是如何执行此操作的一个示例。您需要通过正确的分区和订购以获取正确的顺序。
如果此表很大,则您要在分区上有一个索引,按列订购。
每次在MyTable
中输入新行时,您都必须运行以下UPDATE
:
UPDATE Table_A
SET Table_A.TranId = Table_B.[TranId]
FROM MyTable AS Table_A
INNER JOIN (
SELECT PolicyID, ClaimID, ROW_NUMBER() OVER (PARTITION BY PolicyID, ClaimID ORDER BY ClaimID) AS [TranId]
来自mytable (table_b on table_a.a.policyid = table_b.policyid and table_a.claimid = table_b.claimid