删除连续的行

时间:2011-07-26 15:18:52

标签: sql tsql

ClaimID ClaimStatusCode StatusDate
11,     Closed,         2010-05-10 12:19:00.000
11,     Open,           2010-05-25 09:30:00.000
11,     Closed,         2011-06-01 00:00:00.000
11,     Open,           2011-06-10 00:00:00.000
22,     Closed,         2011-03-14 00:00:00.000
22,     Open,           2011-05-04 00:00:00.000
33,     Closed,         2007-12-19 17:19:00.000
33,     Open,           2007-12-24 12:07:00.000
**33,   Open,           2008-09-08 15:36:00.000**
44,     Closed,         2008-11-19 17:19:00.000
44,     Open,           2008-12-24 12:07:00.000
44,     Closed,         2009-07-28 15:36:00.000

对于任何ClaimID,如果打开声明状态,则不需要第二个打开状态行。这就是每次封闭都是由Open打开的。 这里为ClaimID 33的最后一行,StatusDate 2008-09-08 15:36:00.000不是必需的(加星标以供参考)。 我尝试使用rownumber函数,但没有运气。

答案应该是:

ClaimID ClaimStatusCode StatusDate 
11,     Closed,         2010-05-10 12:19:00.000
11,     Open,           2010-05-25 09:30:00.000
11,     Closed,         2011-06-01 00:00:00.000
11,     Open,           2011-06-10 00:00:00.000
22,     Closed,         2011-03-14 00:00:00.000
22,     Open,           2011-05-04 00:00:00.000
33,     Closed,         2007-12-19 17:19:00.000
33,     Open,           2007-12-24 12:07:00.000
44,     Closed,         2008-11-19 17:19:00.000
44,     Open,           2008-12-24 12:07:00.000
44,     Closed,         2009-07-28 15:36:00.000

2 个答案:

答案 0 :(得分:1)

我使用Cross Apply获取行的上一个状态,然后检查prev状态是否与当前状态相同:

delete ct
from
    claimtest ct
    cross apply (
        select top 1 prevstatus = ClaimStatusCode 
        from claimtest sub 
        where ct.claimid = sub.claimid and sub.statusdate < ct.statusdate 
        order by statusdate desc
    ) p
where 
    ct.ClaimStatusCode = p.prevstatus

答案 1 :(得分:0)

    SELECT
       ClaimID, ClaimStatusCode, MIN(StatusDate)
    FROM
       Table
   GROUP BY
      ClaimID, ClaimStatusCode
   HAVING
      SUM(CASE claimID WHEN 'Open' THEN 1 ELSE -1 END) <= 1

编辑每个yoru评论 - 添加了HAVING条款

PS - 此选择为您获取“好”记录。如果你想改变它只获得“坏”记录(候选删除,我假设),然后使用MAX而不是MIN,并使用&gt;有条款中的1。

相关问题