0

我试图弄清楚如何在不修改基础表的情况下将新列添加到视图中的派生表。让我解释一下我必须做什么:

我需要将简化的 MQSA 模块添加到在 SQL Server 上运行的现有 RIS 应用程序中。我需要显示一份患者名单,这些患者的乳房 MRI 外行信件应邮寄,每 11 个月发生一次。一旦列表上的项目被打印出来,它需要从列表中掉下来,直到它再次到期。

为此,我需要一个额外的列来记录上次打印日期。如果当前日期与上次打印日期之间的天数大于 334 天,则需要在列表中显示。

我的问题是我不允许修改现有的数据库,所以我必须在一个新的表中,在一个单独的数据库中拥有这个列。我在这个单独的数据库中创建了一个视图,其中包含来自现有数据库的表,它为我提供了正确格式的未过滤数据列表。

我在新数据库中添加了一个表,该表记录了打印列表中的项目时的相关 ID 和最后打印日期。我已将此新表添加到视图中,其中一个表具有左外连接,并检查了最后打印日期列,以便成为结果列表的一部分。

我不知道如何将新表与视图结合在一起,以仅显示应打印的普通字母。新表当然是空的,其中还没有数据,因为还没有打印任何内容。只是出于好奇,我已经手动将数据(两列 id)复制到新表中,以测试它是否可以工作,并且确实可以正常工作,并按预期工作。

如果我能以某种方式将视图中的数据复制到这个新表中,它会自动更新以反映视图中的变化,我可以像这样轻松完成我的任务:

SELECT 
    PersonID, 
    PatientID, 
    ModalityID, 
    ReportID, 
    FirstName, 
    LastName, 
    HomePhone, 
    WorkPhone,
    LastPrintDate, 
    CONVERT(VARCHAR(10), SignedDate, 101) AS SignedDate 
FROM 
    mqsa.dbo.vw_mq_LayLetterAlerts_Derived 
WHERE (ModalityID = 4) 
    AND (GETDATE() >= DATEADD(day, 334, LastPrintDate)) 

我对触发器了解不多,所以我不知道这是否是一种选择,因为我正在使用一个包含多个表的视图。

任何想法,将不胜感激。我只需要知道我应该从哪个方向开始我的研究。

谢谢!

编辑:也许我的问题应该是如何镜像另一个数据库中的表?

4

2 回答 2

1

为什么不直接加入旧数据库中的视图?

select <cols>
from olddb..vw_OLDVIEW left outer join
     newdb..PrinterTable
     on <whatever>
where <filters>

您也可以将其包装在新数据库的视图中。

于 2013-04-03T21:55:52.807 回答
0

如果 LastPrintDate 为空,则通过修改我现有的查询以使用 SignedDate 解决了该问题。谢天谢地,我不需要复制任何东西或做任何异国情调的事情。答案一直摆在我面前,我看不到。

于 2013-04-04T18:58:34.753 回答