在符合条件的行之前和之后选择N行? - MS Access

时间:2014-04-11 15:58:54

标签: ms-access ms-access-2003

tbl_A

uqAID    A
1        CC
2        AA
3        SS
4        QQ
5        RR
6        UU
7        LL
8        WW

tbl_B

uqBID    uqAID    B
1        4        NNN
2        4        MMM
3        3        OOO
4        1        PPP
5        6        QQQ
6        4        RRR
7        8        SSS
8        2        TTT

使用此查询

SELECT X.B,
        Y.A
FROM tbl_B AS X,
        tbl_A AS Y
WHERE X.uqAID = Y.uqBID
        AND X.A = 'UU'
        AND Y.B = 'QQQ'

我的结果为" UU QQQ"

但我需要得到像

这样的结果
SS        OOO
CC        PPP
UU        QQQ
QQ        RRR
WW        SSS

MS Access中两个UU和QQQ记录的上下文

1 个答案:

答案 0 :(得分:0)

首先,它取决于订单。因此,您将需要根据您的查询订购,否则无法预测您将获得的结果。

假设它在Y.B专栏上有问题,你可以做这样的事情来获得QQQ,然后是两个:

SELECT Top 3 X.B,
        Y.A
FROM tbl_B AS X,
        tbl_A AS Y
WHERE X.uqAID = Y.uqBID
        AND X.A >= 'UU'
        AND Y.B >= 'QQQ'
order by y.a, y.b

接下来要获得QQQ之前的两个

SELECT Top 2 X.B,
        Y.A
FROM tbl_B AS X,
        tbl_A AS Y
WHERE X.uqAID = Y.uqBID
        AND X.A < 'UU'
        AND Y.B < 'QQQ'
order by y.a desc, y.b desc

从那里你可以将两个结果集合并在一起(留给学生练习)。这应该让你得到两个进程并跟随触发行。