2017-04-07 53 views
1

我想创建一个存储过程,通过比较C1和C2的值,将当前标志的值更新为Y或N,并将最新的一个设置为Y和较早的N.在结果集下面第1行和第2行的C2和C2的值相同,所以我想将最新的当前标志设置为Y,对于较旧的N.在下面的结果集中的第3行没有重复,所以我希望它说Y.标志列的更新值

10 12 9 1985-06-10  NULL 
10 12 60 2015-09-10  NULL 
3 5 23 2001-09-10  NULL 
1 1 96 2010-09-10  NULL 
1 1 71 2016-09-10  NULL 
+1

请用您正在使用的数据库标记您的问题。 –

回答

0

可以在标准SQL中使用相关子查询做到这一点:

update t 
    set flag = (case when date = (select max(date) from t t2 where t2.c1 = t.c1 and t2.c2 = t.c1) 
        then 'Y' else 'N' 
       end); 

特定数据库可能有其他方法,但这应该适用于任何数据库。

+0

非常感谢戈登,为我做了这份工作。 –