ID Date Estimate RowNo PreviousARowno
33 30/06/2014 A 1
33 01/07/2014 A 2
33 02/07/2014 A 3
33 03/07/2014 E 4
33 04/07/2014 E 5
66 30/06/2014 A 6
66 01/07/2014 E 7
66 02/07/2014 E 8
66 03/07/2014 E 9
66 04/07/2014 E 10
在这个虚拟表中,我想使用以下逻辑更新PreviousARowno列:PreviousARowno值应该是Estimate为A的上一个最近日期的行号,所以它看起来像这样:
ID Date Estimate RowNo PreviousARowno
33 30/06/2014 A 1
33 01/07/2014 A 2 1
33 02/07/2014 A 3 2
33 03/07/2014 E 4 3
33 04/07/2014 E 5 3
66 30/06/2014 A 6
66 01/07/2014 E 7 6
66 02/07/2014 E 8 6
66 03/07/2014 E 9 6
66 04/07/2014 E 10 6
有关如何更新该列的任何想法或建议?我已尝试使用select top 1语句进行不同的自联接,但我无法使其动态运行。如果前一个A的日期是已知前缀的值,那么我知道如何做,但遗憾的是未知。顺便说一下,我为此添加了RowNo列,因此它可以用作连接的标准。
答案 0 :(得分:1)
您可以使用相关子查询执行此操作:
select d.*,
(select max(d2.rowno)
from dummy as d2
where d2.id = d.id and d2.rowno < d.rowno and d2.estimate = 'A'
) as PreviousArNo
from dummy as d;