自我加入Access VBA中的动态子句/条件

时间:2015-09-15 15:29:59

标签: sql vba access-vba

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列,因此它可以用作连接的标准。

1 个答案:

答案 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;