1
我将这些数据作为转换过程的一部分插入到另一个表中。不幸的是,我无法修改源或目标位置中的表格模式。基于日期逻辑的案例子查询
,我有以下来源的数据:(显然只是一小部分数据快照)
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
本质的逻辑发生对于给定的学生来说,每个数据记录的最早创建者被认为是预测试。对于同一个学生,同一个创建者的任何和所有后续记录也是预测试。对于后来创建的同一个学生的任何记录,他们都被认为是后测。
我可能会在插入语句中使用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前测/后测testtype。
任何想法?
在此先感谢
哇。这非常简单,超级强大。对此感激不尽!! –