需要限制下表中每个顺序的行数?

时间:2013-03-12 12:12:30

标签: sql sql-server-2008 group-by

我有这样的表:

| Col1       | Col2        | col3         |
|:-----------|------------:|:------------:|
| type1      |      1      |     aaaa     |
| type3      |      101    |     bbbb     |
| type2      |      21     |     cccc     |
| type1      |      2      |     aaa      |
| type2      |      22     |     bbb      |
| type3      |      102    |     ccc      |
| type1      |      3      |     aaax     |
| type2      |      23     |     bbbx     |
| type3      |      103    |     cccx     |

我需要以下列方式输出...

| Col1       | Col2        | col3         |
|:-----------|------------:|:------------:|
| type1      |      1      |     aaaa     |
| type1      |      2      |     aaa      |
| type1      |      3      |     aaax     |
|
| type2      |      21     |     cccc     |
| type2      |      22     |     bbb      |
| type2      |      23     |     bbbx     |
|
| type3      |      101    |     bbbb     |
| type3      |      102    |     ccc      |
| type3      |      103    |     cccx     |

请找一些方法来获得这种输出 我在这张表中有很多记录,但我需要以相同的顺序获得每个TYPE的前5名......

3 个答案:

答案 0 :(得分:1)

尝试:

SELECT Col1, 
        Col2, 
        Col3 
FROM(
    SELECT 
        Col1, 
        Col2, 
        Col3, 
        ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY Col1, Col2, Col3) RNum
    FROM YourTable 
)X WHERE RNum<=5

答案 1 :(得分:1)

使用ORDER BY功能

SELECT COL1, COL2, COL3
FROM MyTable ORDER BY COl1, COl2, COl3

答案 2 :(得分:0)

您无需对此数据进行分组,因为GROUP BY需要聚合某些列。但相反,只使用ORDER BY子句。

SELECT *
FROM    tableName
ORDER   BY Col1 ASC, Col2 ASC, Col3 ASC