Sql 基于订单的更新

Sql 基于订单的更新,sql,teradata,Sql,Teradata,是否可以根据列中定义的优先级更新数据。 我有这样的输入数据 id Start_date active_flag 1 21-03-2013 N 1 23-03-2013 N 1 22-02-2013 N 1 20-02-2013 N 我们必须在我们的数据中维护SC2,并且必须在我们的数据库中保持最新日期(即2013年2月23日)的数据处于活动状态。 我们每天都会收到文件,但在某些情况下,我们可以在2天内收到包含合并数据的文件。现在,我必须确保所有历史记录都得

是否可以根据列中定义的优先级更新数据。 我有这样的输入数据

id  Start_date   active_flag
1   21-03-2013   N
1   23-03-2013   N
1   22-02-2013   N
1   20-02-2013   N
我们必须在我们的数据中维护SC2,并且必须在我们的数据库中保持最新日期(即2013年2月23日)的数据处于活动状态。 我们每天都会收到文件,但在某些情况下,我们可以在2天内收到包含合并数据的文件。现在,我必须确保所有历史记录都得到维护,并且最新日期的数据处于活动状态

我的目标数据如下所示

id  Start_date  active_flag 
1   21-03-2013  N
1   23-03-2013  Y
1   22-02-2013  N
1   20-02-2013  N
但是如何根据开始日期的顺序编写更新来更新列id的数据

提前谢谢

CREATE TABLE #tst(id int,start_data datetime,active_flage varchar(2))
insert into #tst
SELECT 1,'2013-03-21','' UNION
SELECT 1,'2013-03-23','' UNION
SELECT 1,'2013-03-20','' UNION
SELECT 1,'2013-03-19','' UNION
SELECT 1,'2013-03-18','' 

UPDATE #tst set active_flage=CASE when r_Id=1 then 'Y' ELSE 'N' END
FROM #tst a JOIN 
(SELECT ROW_NUMBER() over(PARTITION by id order by start_data desc) as r_Id,* from #tst)b
ON a.Id=b.Id AND a.start_data=b.start_data

select * from #tst

考虑到同一id不会有重复的日期

以所需的顺序逐个循环每一行?否则,可能需要定时批量更新以确保数据的正确性?或者,修改数据/处理的建模方式以解决此类问题?表中是否有主键?