我有一张充满了特定课程(课程编号6)的跟踪数据的表格。
现在,我为课程编号11添加了新的跟踪数据。
每行数据是针对一个课程的一个用户的,因此对于同时分配给课程6和课程11的用户,将有两行数据。
客户希望所有在2008年8月1日之后任何时候完成课程6的用户也将完成课程11标记为完成。但是,我不能仅仅将6转换为11,因为他们想要保留课程6的旧数据。
因此,对于课程号为6的每一行,标记为已完成,并且大于2008年8月1日的日期,我想在包含针对该特定用户的课程11跟踪的行上写入完成数据。
我需要将数据从课程6行转移到课程11行,以便将用户得分和发布完成日期之类的内容移到其他位置。
这是表格的结构:
userID (int) courseID (int) course (bit) bookmark (varchar(100)) course_date (datetime) posttest (bit) post_attempts (int) post_score (float) post_date (datetime) complete (bit) complete_date (datetime) exempted (bit) exempted_date (datetime) exempted_reason (int) emailSent (bit)
一些值将为NULL,并且userID / courseID显然不会被继承,因为它已经在正确的位置。
也许我读错了问题,但是我相信您已经插入了课程11的记录,只需要更新那些符合课程6的数据列出的条件的记录即可。
如果是这种情况,则需要使用UPDATE…FROM语句:
UPDATE
FROM
UPDATE MyTable SET complete = 1, complete_date = newdata.complete_date, post_score = newdata.post_score FROM ( SELECT userID, complete_date, post_score FROM MyTable WHERE courseID = 6 AND complete = 1 AND complete_date > '8/1/2008' ) newdata WHERE CourseID = 11 AND userID = newdata.userID