我有一个在合并复制中使用的复制集(SQL 2005)。我正在努力弄清楚如何将前2的过滤器应用到桌子上。
另外,是否有一种方法可以设置一个过滤器,以便它向下滴到子表,或者我需要以不同的方式处理它呢?
我正在看的是一个计划数据库,我正在复制我们用户的笔记本电脑。我只想复制最后两个计划,并且只复制这两个计划的相关数据。例如,有一个药物表,其中列出了与某个计划相关的所有药物。我只想复制药物表上的行,这些行与前2项计划中的一项挂钩。
我不知道该怎么做。我在“发布属性”中看到了筛选器选项,但它是按表显示的,而且我似乎没有前2的选项。
发布于 2010-02-02 20:00:29
过滤只能通过WHERE子句进行。你需要把它放到过滤器里,就像这样。
WHERE PlanId IN (SELECT TOP (2) PlanId FROM Plan ORDER BY CreateDate DESC)如果将其放入每个表的筛选器中,则只会复制这2个计划的行。
若要为筛选器使用多列,这样的“应该”操作。我还没有测试过这个,所以可能需要一些调整才能实现。
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)
)https://serverfault.com/questions/108874
复制相似问题