SQL SERVER分组随机查询

表ID
字段 批号,代码,测试值,时间
数据 001 A001 0.001 2016100101
001 A001 0.002 2016100102
001 A001 0.001 2016100103
007 A001 0.002 2016100104
007 A001 0.001 2016100101
007 A001 0.002 2016100102
005 A001 0.001 2016100103
006 A002 0.002 2016100104
006 A002 0.001 2016100104
001 A001 0.001 2016100105
009 A003 0.002 2016100102
005 A001 0.001 2016100106
005 A001 0.001 2016100106
010 A001 0.001 2016100106
根据“代码”字段获取数据,同一代码的批号分别随机查出N条记录,每一批号随机分别获取N条记录。
例如查询代码为A001,每一批号随机分别获取2条记录,并按批号升序排列,查询结果如下:
001 A001 0.001 2016100101
001 A001 0.001 2016100105
005 A001 0.001 2016100103
005 A001 0.001 2016100106
007 A001 0.001 2016100101
007 A001 0.002 2016100102
这样查出来所有代码都会显示

select * from
(select *,ROW_NUMBER() over(partition by 批号 order by NEWID()) as new_index
from 表名) a where a.new_index=1 or a.new_index=2追问

只要代码为A001的数据,然后每个批号取2条数据

追答

加一个条件就行了
select * from
(select *,ROW_NUMBER() over(partition by 批号 order by NEWID()) as new_index
from 表名 where 代码 ='A001') a where a.new_index=1 or a.new_index=2

追问

非常感谢

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜