以下是引用lbjdyx在2013-4-19 21:11:24的发言:
谢谢 kiff!希望给解释一下,我也好理解学习一下。如果一年级是2013但是学期是第2学期,2012级的是4学期,2011级的是第6期,2010级的是8学期的课程该怎么改一下?
主要是用等差数列与年级的关系。
1、只更新每年级的第1学期。
UPDATE pyfa SET 适用年级=STR(YEAR(DATE())-(VAL(pyfa.开课学期)+1)/2+1) from (select 专业名称,开课学期,MAX(方案版本) 方案版本 from pyfa WHERE ALLTRIM(方案版本)<=ALLTRIM(STR(YEAR(DATE())-(VAL(开课学期)+1)/2+1)) group by 专业名称,开课学期) b WHERE pyfa.专业名称==b.专业名称 AND pyfa.开课学期==b.开课学期 AND pyfa.方案版本==b.方案版本 AND MOD(VAL(pyfa.开课学期),2)=1
2、更新每年级的第1、2学期。(把一句最后的 “ AND MOD(VAL(pyfa.开课学期),2)=1”去丢即可,这里用到 str()自动四舍五入的特点)
UPDATE pyfa SET 适用年级=STR(YEAR(DATE())-(VAL(pyfa.开课学期)+1)/2+1) from (select 专业名称,开课学期,MAX(方案版本) 方案版本 from pyfa WHERE ALLTRIM(方案版本)<=ALLTRIM(STR(YEAR(DATE())-(VAL(开课学期)+1)/2+1)) group by 专业名称,开课学期) b WHERE pyfa.专业名称==b.专业名称 AND pyfa.开课学期==b.开课学期 AND pyfa.方案版本==b.方案版本