回 帖 发 新 帖 刷新版面

主题:[讨论]请教一个头痛了几天的问题

我现在有两个数据表
一个里面有200个样本,是病例组
一个数据表有10000人以上,是正常人的资料,
我需要为病例组为每个病例从正常人按性别年龄相同找两个对照

问题
是不是必须循环语句?
怎样才不保证正常人不会被重复选中?

回复列表 (共8个回复)

沙发

在线等,请大家帮助!谢谢了!

板凳

请仍奋斗在电脑前的兄弟们了!

3 楼

请问按表一记录逐步在表二个查询代号怎么写?

4 楼

SELECT 表1
SCAN
    l_性别=表1.性别
    l_年龄=表1.年龄
    SELECT * FROM 表2 WHERE 性别=l_性别 AND 年龄=l_年龄 INTO CURSOR MyCursor
    a1=Int(Rand()*RECCOUNT()+1)
    a2=Int(Rand()*RECCOUNT()+1)
    GO a1
    ?编号+姓名
    GO a2
    ?编号+姓名
ENDSCAN

5 楼

用循环是比较稳妥的,你要保证不重复选中,那要在正常人表里加一个选择标记

6 楼

如果要随机抽取,那先随机产生一个记录号,然后GO该记录


=rand(-1)

aa=int(round(rand(),5)*最大记录数+1)
go aa

7 楼

SELECT 表1
SCAN
    l_性别=表1.性别
    l_年龄=表1.年龄
    SELECT * FROM 表2 WHERE 性别=l_性别 AND 年龄=l_年龄 and 选中标志=0 INTO CURSOR MyCursor
    a1=Int(Rand()*RECCOUNT()+1)
    a2=Int(Rand()*RECCOUNT()+1)
    GO a1
    ?编号+姓名
    select 表2
    locate for 编号=MyCursor.编号
    replace 选中标志 with 1
    select MyCursor
    GO a2
    ?编号+姓名
    select 表2
    locate for 编号=MyCursor.编号
    replace 选中标志 with 1
ENDSCAN

8 楼

楼主的意图我没太搞清楚,觉得应该有不用循环就能解决的更好方法。

我来回复

您尚未登录,请登录后再回复。点此登录或注册