私はこのデータを取って、変換プロセスの一部として別のテーブルに挿入しています。残念ながら、ソースまたはターゲットのいずれかの場所でテーブルスキーマを変更することはできません。日付ロジックに基づくケースサブクエリ
私は、次のソースデータを持っています(もちろんデータのほんの小さなスナップショット)
Id StudentID Score Createdate
1 1 86 2015-09-15 12:59:46.000
2 1 89 2015-09-15 12:59:46.000
3 1 76 2015-09-15 12:59:46.000
4 1 91 2015-10-14 13:45:33.000
5 1 87 2015-10-14 13:45:33.000
6 1 78 2015-10-14 13:45:33.000
7 1 88 2015-10-14 13:45:33.000
8 2 78 2014-10-23 09:21:17.000
9 2 82 2014-10-23 09:21:17.000
10 2 83 2014-10-23 09:21:17.000
私の最終的な結果対象データは次のようになります。基本的に
Id StudentID TestType Score Createdate
1 1 Pretest 86 2015-09-15 12:59:46.000
2 1 Pretest 89 2015-09-15 12:59:46.000
3 1 Pretest 76 2015-09-15 12:59:46.000
4 1 Posttest 91 2015-10-14 13:45:33.000
5 1 Posttest 87 2015-10-14 13:45:33.000
6 1 Posttest 78 2015-10-14 13:45:33.000
7 1 Posttest 88 2015-10-14 13:45:33.000
8 2 Pretest 78 2014-10-23 09:21:17.000
9 2 Pretest 82 2014-10-23 09:21:17.000
10 2 Pretest 83 2014-10-23 09:21:17.000
発生ロジックを与えられた生徒のために、各データレコードの最も早い作成者が予備テストとみなされます。同じ生徒の場合、同じ作成者の後続のすべてのレコードもまた予備テストです。後で作成された同じ生徒のレコードについては、すべて後のテストとみなされます。
私は、おそらくinsert文のcase文を使用しています。これ以外にも、変換のために出てくる追加のデータ要素があります。
単純化のために、私のスクリプトは次のようになります。
INSERT INTO targettable
(id,
studentid,
testtype,
score,
createdate)
SELECT DISTINCT
id = sourcetable.id,
studentid = sourcetable.studentid,
testtype = CASE
WHEN ????
END
score = sourcetable.score,
createdate = sourcetable.createdate
FROM sourcetable
私の質問は、私はCREATEDATEに基づいて事前テスト/事後のテスト・タイプを決定するためのロジックを処理する方法が本当にわからない、です。
アイデア?事前
うわー。それは信じられないほど簡単で強力でした。それほどありがとう! –