私は自分の履歴テーブルをチェックしてその中のレコードを書き換えるライトプロシージャに縛られています。今月挿入された記録を、新しい挿入で複製された場合にのみ置き換える必要があります。
今のところ、ステータスIDが1と2のクライアントをコピーしたこのプロシージャがありますが、もう一度呼び出すと、レコードが複製されます。
create procedure sp_MonthlyInsertInHistory
as
INSERT History( ClientId, CategCode)
SELECT ClientId, CategCode
FROM dbo.Clients
where StatusID in (1,2)
go
履歴テーブルは次のようになります
Historyid(int) auto increment, ClienID (int), CategCode (varchar), RecordDate (date)GETDATE();
1, 11, SR, 2013-02-01
2, 12, CH, 2013-02-01
3, 11, SR, 2013-03-01
4, 12, CH, 2013-03-01
この手順を実行する場合は、レコード11, 1, 2013-03-01
を削除して現在の日付に置き換える11, 1, 2013-03-18
必要があります。現在、clientid12がstatusid1または2にないが、すでにテーブルにある場合は、そこにとどまる必要があります。ただし、レコードが今月に作成されていない場合、または挿入ステートメントのselectに含まれていない場合は、レコードを削除しないでください。(たとえば、新しいクライアント)。私の説明をご理解いただければ幸いです。何から始めればいいのかわからないので、助けていただければ幸いです。