2014-03-04 25 views
0

我需要对一组产品进行采样。产品属于某种形式。表单可以映射到一些目录。SQL查询 - 如何限制每个特定列的行数

例如,形成= 1523被映射到目录= 5和目录= 8

我需要一种特定形式上运行,并以使最大750个产品从每个目录。

我想使用限制(RowNum < = 750 *目录数量),但我不明白如何限制每个目录,而不是总查询结果。

此外,我没有以前有关具体表格中有多少个目录的知识。

例如,可以说我想每个目录只有2行。我的样品是:

Product Form Catalog 
----------------------- 
1  50  5 
2  50  6 
3  50  6 
4  50  6 

如何从产品目录6中获得产品1和产品2的随机产品的结果?

+0

你的描述有点欠缺,但是你可以使用'LIMIT ??'吗? – Coderchu

+0

我会尽力解释更好。你在说什么(使用限制)正是我所要求的(PLSQL正在使用RowNum) - 我如何限制每个目录而不是每个完整的答案 – Alex

回答

4

可以使用解析函数ROW_NUMBER():

select product, form, catalog from 
(select product, form, catalog, 
     row_number() over (partition by catalog order by product, form) as rn 
    from mytable 
) 
where rn <= 750 

partition by catalog条款得到目录中的行号。您需要将order by条款与我一样放入,但您可能需要以不同的顺序排列,这取决于您。