更改数据捕获-仅获取明显的最新更改

时间:2018-09-17 13:18:22

标签: sql-server cdc

我试图仅从某个变更数据捕获表中查找所有不同的最新变更。这是桌子的快照。 enter image description here

我尝试使用此查询:

select DISTINCT StudentUSI, sys.fn_cdc_map_lsn_to_time(__$start_lsn) TransactionTime, __$operation Operation, LastModifiedDate 
from cdc.Student_CT
where __$operation in (1,2,4)
ORDER BY StudentUSI;

但是返回的结果是:

enter image description here

如果我尝试使用GROOUP BY,它也会显示:

  

选择列表中的“ cdc.Student_CT .__ $ start_lsn”列无效   因为它既不包含在聚合函数中,也不包含在   GROUP BY子句。

我还有其他方法可以获取有关StudentUSI值的最新更改吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

使用row_number()

select * from 
(select DISTINCT StudentUSI, sys.fn_cdc_map_lsn_to_time(__$start_lsn) TransactionTime, __$operation Operation, LastModifiedDate ,row_number() over(partition by StudentUSI order by LastModifiedDate desc) as rn
from cdc.Student_CT
where __$operation in (1,2,4))a where rn=1