我试图编写查询来跟踪成员更改历史记录,但我现在遇到了问题。这是我在下面使用的表格,
CURRENT_NO、NEW_MEMBER_NO、OLD_MEMBER_NO、SEQ_NO ---------- ------------- ------------- ------ M002 M001 M000 1 M002 M002 M001 1 M100 M004 1 M100 M005 1 M101 M100 1 M201 M200 1 M200 M201 2
我想要做的是跟踪 member_no 更改历史记录并将 CURRENT_NO 列更新为 currnet 成员编号。
这是我想要的结果
CURRENT_NO、NEW_MEMBER_NO、OLD_MEMBER_NO、SEQ_NO ---------- ------------- ------------- ------ M002 M001 M000 1 M002 M002 M001 1 M101 M100 M004 1 M101 M100 M005 1 M101 M101 M100 1 M200 M201 M200 1 M200 M200 M201 2
在第一行使用 OLD_MEMBER_NO,我搜索 NEW_MEMBER_NO,如果找到它,则将第一行的 CURRENT_NO 更新为第二行的 NEW_MEMBER_NO。
CURRENT_NO 列显示当前成员没有每一行。
1)成员 M000 更改为 M001,从 M001 更改为 M002,所以现在 CURRENT_NO 列在两行上都是 M002
2)它有时是复杂的。M004 和 M005 -> M100 -> M101
这种改变是可能的。对于这种情况,CURRENT_NO 都是 M101。
3) M200 -> M201,然后再次从M201变为M200。更大的 SEQ_NO 是新的。所以对于这种情况,CURRENT_NO 是 M200。
我尝试使用像 belo 之类的查询,,....
更新 (选择 A.MBR_# 作为 MBR_#, b.NEW_MBR_# 作为 B_NEW_MBR_#, B.OLD_MBR_# AS B_OLD_MBR_#, A.NEW_MBR_# 作为 A_NEW_MBR_#, A.OLD_MBR_# AS A_OLD_MBR_# 从 BI_MEMBER_HISTORY A, BI_MEMBER_HISTORY B 其中 B.OLD_MBR_# = A.NEW_MBR_# ) SET MBR_# = B_NEW_MBR_#;
问题是
1) 有时有超过 2 个更改。
2)和上面的例子3..这让我写查询很复杂..我知道我的查询有问题。
我尝试使用带有游标或递归查询的过程,但我不知道如何处理它。
谁能给我一个线索?
先感谢您。