sql 循环查询
有两个表
A表: a_id, classId ,className, count
1 A类 A名称 20
2 B类 B名称 30
... ...
B表:b_id, classId, property1, property2
1 A类 v1 v2
2 A类 v3 v4
3 B类 v5 v6
4 B类 v7 v8
... ...
我现在想得到这样一个结果:
首先从A表中找到类别以及对应的数量,
比如A类对应20条,然后在B表中随机找到属于A类的70%的明细数据
B类对应30条,然后在B表中随机找到属于B类的70%的明细数据
等等,有好多类别
如果单独找某一类的可以用如下语句:
select top percent 70 * from B where classId=‘A类’
但是现在类别很多,一条一条写太多,如何用一个语句能搞定?
熟悉的朋友帮忙啊。谢谢!!
[解决办法]
select a.classid,a.count,b.* from A表 a inner join(select *,row_number()over(partition by classid order by newid())rn from B表)b on a.classid=b.classidwhere b.rn<(select count(*)*0.7 from B表 where classid=b.classid)
[解决办法]
select distinct n.* from B mcross apply(select top percent 70 * from B where classid=m.classid) n
[解决办法]