2014-03-19 186 views
0
Task Status    Date     Flag 

a Complete February 21, 2014 
b In Progress February 11, 2014 
c Complete February 11, 2014 
d Complete February 1, 2014 
a In Progress February 30, 2014   To remove 
c Not started February 12, 2014   To remove 
b Complete February 13, 2014 

我需要评论为所有有记录(“要删除”)更新上表中标志列(进行中/未开始) 对于同一任务,(相同的任务) 每隔一个状态,除完成 例如: 任务“a”显示两次(或多次,但在我的示例中只显示两次)。 它在2月21日第一次显示完成状态。 第二次在晚些时候(2月30日)与进行中显示。 所以第二次出现必须标记为删除。Update语句

如果我们有“一”,“未启动”,2月2日 - 这将被保留。

ps。日期在数据库加载日期类型

+1

发布你的一些代码,你到现在为止试过了什么? –

+0

你有试过什么吗? – Jerry

+0

当一个任务有第二个日期,那么降序日期的列必须被标记为false?因为评论将会删除第二个(降序日期)。对? –

回答

0

试试下面的代码,我认为表名tblTask​​。

With CTE as 
(
select task,status,DATE,flag,RANK() over (partition by task order by date asc, status asc) as Rnk 
from tblTask 
), CTE1 as 
(
select * from CTE where 
Rnk = 1 and status = 'Complete' 
), CTE2 as 
(
select tblTask.* from CTE1 
left join tblTask on CTE1.task = tblTask.task 
where tblTask.status <> 'Complete' 
) 
update CTE2 set flag = 'To remove' 

将尝试最短的方法。