日期:2014-05-17  浏览次数:20745 次

随机抽样1:3
table1 table2两个表,table1有10个记录,table2有100个记录。两个表格对应的变量名称都一样,每一个表格都有5个变量:人rs1---rs5.

想实现随机抽样:首先,对于每一个table1里面的记录,先在table2中抽取出对应的rs1变量相同的那些记录,然后再在其中随机抽三条。

也就是说,tabel1一共10个记录,那么最后抽出来table2里面30个。

可以利用VBA或者SQL
随机抽样

------解决方案--------------------

--举个例子
declare @a table(i int)
insert into @a
select number from master..spt_values
where type='P' and number>0 and number<11
declare @b table(i int)
insert into @b
select  number from master..spt_values
where type='P' and number>0 and number<101
--以下执行
select i from @b as b where b.i=( select top 1 i from @a order by NEWID() )
union all
select * from ( select top 3 i from @b order by NEWID() ) as x


------解决方案--------------------
select top 10 * from 
(
select rs from table1 
union all
select rs from table2
) a
order by newid()

------解决方案--------------------
Create table tb1 (rs1 varchar(1))
Create table tb2 (rs1 varchar(1))
------------
Select tt.*
From tb1 as t1
Cross Apply
(
Select top (3) *
From tb2
Where tb2.rs1 = t1.rs1
Order by NEWID()
)as tt

试试这个~MsSqlServer2008