注册 登录
编程论坛 VFP论坛

查找相关两行数据

fdqzy 发布于 2021-08-13 18:35, 903 次点击
如下表:
程序代码:
create cursor b1 (m1 n(3),m2 c(3))
insert into b1 values (4," ")
insert into b1 values (1,"A")
insert into b1 values (0,"A")
insert into b1 values (1," ")
insert into b1 values (3,"  ")
insert into b1 values (4,"")
insert into b1 values (2,"A")
insert into b1 values (6," ")
insert into b1 values (8," ")
insert into b1 values (2,"A")


查找m2含A,并筛选出此行和相关的上一行数据,得到如下数据:
程序代码:
create cursor b1 (m1 n(3),m2 c(3))
insert into b1 values (4," ")
insert into b1 values (1,"A")
insert into b1 values (0,"A")
insert into b1 values (4,"")
insert into b1 values (2,"A")
insert into b1 values (8," ")
insert into b1 values (2,"A")

[/color]
应如何进行?谢谢!

[此贴子已经被作者于2021-8-13 18:41编辑过]

2 回复
#2
sdta2021-08-13 19:44
程序代码:
create cursor b1 (m1 n(3),m2 c(3))
insert into b1 values (4," ")
insert into b1 values (1,"A")
insert into b1 values (0,"A")
insert into b1 values (1," ")
insert into b1 values (3,"  ")
insert into b1 values (4,"")
insert into b1 values (2,"A")
insert into b1 values (6," ")
insert into b1 values (8," ")
insert into b1 values (2,"A")

create cursor b2 (m1 n(3),m2 c(3))
SELECT * FROM b1 INTO ARRAY lb
FOR lnj = 1 TO ALEN(lb, 1)
    IF lnj < ALEN(lb, 1) AND "A" $ lb[lnj + 1, 2]
        INSERT INTO b2 VALUES (lb[lnj, 1], lb[lnj, 2])
        IF lb[lnj, 2] != lb[lnj + 1, 2]
            INSERT INTO b2 VALUES (lb[lnj + 1, 1], lb[lnj + 1, 2])
        ENDIF
    ENDIF
ENDFOR
SELECT b2
BROWSE
#3
fdqzy2021-08-13 20:36
回复 2楼 sdta
谢谢!
1