0
Attendence
(
  Stu_id int
  Att_Id int
  Att_Date datetime
  Att_Num numeric(15,5)
)

この表には基本的に出席記録が含まれています。2012年1月1日から今日までの欠落した日付の行を入力するロジックを見つけようとしています。

この期間の出席記録が1つあると仮定しrow (1,1,'2012-05-06',1.20000)ます。次に、2012年1月1日から今日までの毎日の行を挿入します。ただし、実際の日付であるはずの日付フィールドを除くすべてのフィールドに同じ値を持つ既存の日付を除きます。

すべての行を一括挿入しようとしていますが、日付フィールドを調整して既存の日付を確認する方法がわかりません。

ありがとう。

4

2 に答える 2

0

日付をループするストアドプロシージャを試してください。

またはさらに良いことに、日付テーブルを作成し、そこから選択します。これははるかに高速になります。何かのようなもの:

INSERT INTO Attendence (Stu_id, Att_Id, Att_Date, Att_Num)
SELECT a.Stu_id, a.Att_Id, d.TheDate, a.Att_Num
FROM Attendence a
INNER JOIN Dates d ON d.TheDate BETWEEN '2012-01-01' AND GETDATE() 
    AND d.TheDate <> a.Att_Date
于 2012-07-19T17:34:19.857 に答える