【发布时间】:2020-01-18 20:01:12
【问题描述】:
我有一个表(Table1),它为每个帐户存储了几个快照。如果任何列 val1、val2、val3、val4、val5 的值发生变化,我们每天都可能会收到/插入新的快照到帐户
表1
T1ID Account# snapshotDate val1 val2 val3 val4 val5
1 1001 1/1/2017 1111 2222 3333 4224 5551
2 1001 1/1/2018 1111 2222 3333 4444 5551
3 1001 1/1/2019 1111 2222 3333 4444 5550
4 2002 1/1/2017 123 1234 12345 123456 3434
5 2002 1/1/2018 123 1212 12345 123456 3434
6 2002 1/2/2019 333 1212 62626 252525 3434
我想每周从 Table1 中提取这些帐户的更新快照,并将它们添加到表/队列 (Table2) 中,前提是它是第一个快照或某些列发生更改(val2 或 val5)
表2
T2ID T1ID
01 1
02 3
03 4
04 5
- 帐户# 1001 的 T1ID 1 已添加,因为它是第一个快照
- 未添加帐户# 1001 的 T1ID 2,因为列(val2 或 val5)没有变化
- 帐户# 1001 的 T1ID 3 由于列 (val5) 的更改而被添加
- 添加了帐户# 2002 的 T1ID 4,因为它是第一个快照
- 添加帐户# 2002 的 T1ID 5 是因为 (val2) 列发生更改
- 未添加帐户# 2002 的 T1ID 6,因为列(val2 或 val5)没有变化
Table2 将用作每个帐户的更改队列,这些更改将被发送到另一个进程。
我可以为此使用的最佳优化查询是什么?
【问题讨论】:
-
你试过什么?请向我们展示您的尝试。
-
确实,不要要求“最佳优化查询”。试着先做一些事情。然后征求意见以改进它。
-
对不起我的问题是如何实现它?我需要一些关于如何做的想法?
-
为什么没有 T1ID 6 的记录?
-
因为没有更改列(val2 或 val5)
标签: sql sql-server tsql