读书人

sql 循环查询解决方案

发布时间: 2012-06-05 13:54:06 作者: rapoo

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类’

但是现在类别很多,一条一条写太多,如何用一个语句能搞定?

熟悉的朋友帮忙啊。谢谢!!


[解决办法]

SQL code
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)
[解决办法]
SQL code
select distinct n.* from B mcross apply(select top percent 70 * from B where classid=m.classid) n
[解决办法]
探讨

SQL code

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.classid
where b.rn<(select count(*)*0.7 from……

[解决办法]
各位请注意一点:select top percent 70 * from B where classId=‘A类’

这个百分比写的有点问题
修正:
select top 70 percent * from B where classId=‘A类’

读书人网 >SQL Server

热点推荐