我有以下几点:查找最近更新的记录,而其他列具有特定的价值和地位
Corp_ID ExpireDate RecordUpdateDate Status State
100 2013/08/02 2013-04-02 00:00:00 Active CO
100 2013/08/05 2013-08-02 00:00:00 Active CO
100 2013/08/26 2013-08-05 00:00:00 Closed NV
100 2013/10/24 2013-08-26 00:00:00 Active CO <<<------
100 2013/11/14 2013-10-24 00:00:00 Active NV
100 12/31/9999 2013-11-14 00:00:00 Active AZ
我想获得对应于到期日期2013/10/24
记录。我的目标是显示当前状态(主动 - 最低行)开始的时刻。正确的回报将是2013/10/24
,因为当公司从状态“已关闭”更新为“已激活”状态时。
答案是(我认为)
select top 1 Y.* from
(
select RecordUpdateDate, Status, ExpireDate,
dense_rank() over (order by RecordUpdateDate desc) as rank
from [dbo].[Table_1]
) X
inner join
(
select RecordUpdateDate, Status, ExpireDate,
dense_rank() over (order by RecordUpdateDate desc) as rank
from [dbo].[Table_1]
) Y
on X.rank = Y.rank- 1 where X.Status <> Y.Status
你的答案是关键!
谢谢两者,到目前为止.. :) – user3105932
状态字段没有相关的过程。它可能是任何东西。谢谢,这看起来不错 - 但是,我必须从具有日期12/31/9999的列/行以及它的任何状态开始工作 - 我必须向后移动并获得最近一次进入该状态的时刻。 – user3105932
例如:WHERE状态='关闭' ...我无法真正使用它作为过滤器,因为整个公司可能一直活跃的整个时间或价值可能是在整个时间'过渡'...或任何他们的组合。 – user3105932