主题:[讨论]请教一个头痛了几天的问题
cultivator
[专家分:0] 发布于 2009-10-04 00:20:00
我现在有两个数据表
一个里面有200个样本,是病例组
一个数据表有10000人以上,是正常人的资料,
我需要为病例组为每个病例从正常人按性别年龄相同找两个对照
问题
是不是必须循环语句?
怎样才不保证正常人不会被重复选中?
回复列表 (共8个回复)
沙发
cultivator [专家分:0] 发布于 2009-10-04 00:26:00
在线等,请大家帮助!谢谢了!
板凳
cultivator [专家分:0] 发布于 2009-10-04 00:41:00
请仍奋斗在电脑前的兄弟们了!
3 楼
cultivator [专家分:0] 发布于 2009-10-04 01:30:00
请问按表一记录逐步在表二个查询代号怎么写?
4 楼
fyyylyl [专家分:8550] 发布于 2009-10-04 09:36:00
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 楼
dfwxj [专家分:270] 发布于 2009-10-07 23:41:00
用循环是比较稳妥的,你要保证不重复选中,那要在正常人表里加一个选择标记
6 楼
dfwxj [专家分:270] 发布于 2009-10-07 23:44:00
如果要随机抽取,那先随机产生一个记录号,然后GO该记录
=rand(-1)
aa=int(round(rand(),5)*最大记录数+1)
go aa
7 楼
bjkstx [专家分:0] 发布于 2009-10-22 11:56:00
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 楼
北京惬意 [专家分:1330] 发布于 2009-10-25 17:51:00
楼主的意图我没太搞清楚,觉得应该有不用循环就能解决的更好方法。
我来回复