用于检查Sequence_No的SQL脚本?

时间:2014-09-18 13:10:25

标签: sql sql-server sequences

我需要在table1中检查每个风险的客户端生成的序列号,每个策略(例如,每个风险从1开始,每个客户端增加1)。 如果客户端在表2中将Role_ID设置为“A”,则分配序列号1,如果客户端将Role_id设置为“B”,则分配序列号。
之后表1看起来像

policy       risk          Risk_Sequence_No          Client_Id          Tab2.role_id
---------------------------------------------------------------------------------------
989898989      1                  1                  1000000001        A
989898989      1                  2                  1000000002        B
989898989      2                  1                  1000000001        A
989898989        2                2                  1000000002        B
989898989      3                  1                  1000000001        A
170023233      1                  1                  1000000004        A
170023233      1                  2                  1000000005        B

表2:

策略Client_Id role_id

989898989     1000000001                 A
989898989     1000000002                 B
170023233     1000000004                 A
170023233       1000000005                 B

1 个答案:

答案 0 :(得分:1)

您的示例中没有role_id,但此类问题的一般解决方案是窗口函数:

select policy,
       risk,
       row_number() over (partition by policy order by client_id) as risk_sequence_no
       client_id
from the_table
order by policy, risk, client_id;