筛选Top 2的复制集

我有一个我们在合并复制(SQL 2005)中使用的复制集。 我想弄清楚如何应用前两名的filter到一个表。

此外,有没有办法设置一个filter,以便它滴下到子表或我需要处理的方式不同?

我正在看的是一个数据库计划,我复制到我们的用户的笔记本电脑。 我只想复制最后两个计划,只复制这两个计划的相关数据。 例如,有一个Medication表列出了与某个Plan关联的所有Medication。 我只想复制绑定到Top 2计划之一的Medication表上的行。

我不知道该怎么去做。 我在“发布属性”中看到“筛选器”选项,但它是按表格显示的,我似乎没有select“前2名”选项。

过滤只能通过WHERE子句完成。 你需要把什么东西放入filter就是这样的。

WHERE PlanId IN (SELECT TOP (2) PlanId FROM Plan ORDER BY CreateDate DESC) 

如果你把它放到每个表的filter中,它只会复制这两个计划的行。

为filter使用多个列,像这样的“应该”的工作。 我没有testing过,所以可能需要一些调整才能实现。

 WHERE PlanId IN ( SELECT PlanId FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY ClientId, PlanId ORDER BY CreateDate DESC) RowId, PlanId, ClientId FROM [Plan] a where [Plan].PlanId = a.PlanId and [Plan].ClientId = a.ClientID ) b WHERE b.RowId IN (1,2) )