基になるテーブルを変更せずに、ビュー内の派生テーブルに新しい列を追加する方法を見つけようとしています。私がしなければならないことを説明しましょう:
SQL Server で実行される既存の RIS アプリケーションに、単純化された MQSA モジュールを追加する必要があります。11 か月ごとに行われる、乳房 MRI の一般書簡が郵送される予定の患者のリストを表示する必要があります。リストのアイテムが印刷されると、次の期日までリストから外される必要があります。
これを行うには、最後の印刷日を記録する追加の列が必要です。現在の日付と最後に印刷された日付の間の日数が 334 日を超える場合は、リストに表示する必要があります。
私の問題は、既存のデータベースを変更することが許可されていないため、この列を別のデータベース内の新しいテーブルに含める必要があることです。この別のデータベースに、既存のデータベースからテーブルを含むビューを作成しました。これにより、フィルター処理されていないデータのリストが正しい形式で表示されます。
関連する ID と、リストの項目が印刷された最終印刷日を記録するテーブルを新しいデータベースに追加しました。この新しいテーブルを、テーブルの 1 つに左外部結合を使用してビューに追加し、最後に印刷された日付の列をチェックして、結果のリストの一部になるようにしました。
新しいテーブルをビューと一緒にして、印刷予定のレイレターのみを表示する方法がわかりません。もちろん、新しいテーブルは空で、まだ何も印刷されていないため、データはまだありません。好奇心から、データ (ID の 2 つの列) を新しいテーブルに手動で複製して、それが機能するかどうかをテストしました。期待どおりに機能しました。
ビューのデータをこの新しいテーブルに何らかの方法でレプリケートできれば、それ自体が自動的に更新されてビューの変更が反映され、次のように簡単にタスクを達成できます。
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))
私はトリガーについてあまり知らないので、複数のテーブルを含むビューで作業していることを考えると、それがオプションになるかどうかはわかりません。
どんなアイデアでも大歓迎です。どの方向に研究を始めるべきかを知る必要があるだけです。
ありがとう!
編集:おそらく私の質問は、別のデータベースのテーブルをミラーリングする方法でしょうか?