更新标志列的值

时间:2017-04-07 15:50:46

标签: sql

我想创建一个存储过程,通过比较C1和C2的值将Current Flag的值更新为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 :(得分: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);

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