我需要在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:
989898989 1000000001 A
989898989 1000000002 B
170023233 1000000004 A
170023233 1000000005 B
答案 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;