表user ID为自动增长 gradetypeid 表示几年级
select id,name,gradetypeid,brownum,age,meteid,[date] from users
结果
1 张三 1 11 12 1 2012-10-11
2 张四 2 16 11 9 2012-09-10
3 张五 2 17 7 8 2012-09-01
4 张六 3 16 9 10 2012-08-07
5 张七 3 18 7 4 2012-09-10
6 张八 2 19 9 7 2012-07-06
7 张九 2 21 16 8 2012-05-04
8 张十 3 41 19 12 2012-06-09
9 李一 1 71 7 6 2012-03-01
11 李二 3 99 19 11 2012-09-11
13 李四 1 88 10 5 2012-01-08
14 王五 2 54 15 7 2012-06-05
15 王六 3 33 16 15 2012-02-03
16 王七 3 44 17 16 2012-09-10
18 王九 3 56 19 19 2012-03-09
19 关一 3 34 20 21 2012-06-07
表grade id为自动增长
select id, gradename,gradeid,gradetypeid,gradetypename,meteid from [grade]
结果
1 一年级 1 1 小学 1
3 三年级 3 2 初中 9
4 二年级 5 2 初中 8
5 一年级 1 3 高中 10
6 二年级 2 3 高中 4
7 一年级 1 2 初中 7
9 二年级 2 2 初中 8
10 三年级 3 3 高中 12
11 六年级 6 1 小学 6
12 二年级 2 3 高中 11
13 五年级 5 1 小学 5
15 一年级 1 2 初中 7
16 一年级 1 3 高中 15
18 二年级 2 3 高中 16
19 三年级 3 3 高中 19
20 一年级 1 3 高中 21
我想得到的结果是 高中 一年级 ,二年级,三年级 brownum最大的前两名数据
id name gradename gradetypename age
19 关一 一年级 高中 20
15 王六 一年级 高中 16
11 李二 二年级 高中 19
16 王七 二年级 高中 17
18 王九 三年级 高中 19
8 张十 三年级 高中 19
select id,name,gradetypeid,brownum,age,meteid,[date] from users
结果
1 张三 1 11 12 1 2012-10-11
2 张四 2 16 11 9 2012-09-10
3 张五 2 17 7 8 2012-09-01
4 张六 3 16 9 10 2012-08-07
5 张七 3 18 7 4 2012-09-10
6 张八 2 19 9 7 2012-07-06
7 张九 2 21 16 8 2012-05-04
8 张十 3 41 19 12 2012-06-09
9 李一 1 71 7 6 2012-03-01
11 李二 3 99 19 11 2012-09-11
13 李四 1 88 10 5 2012-01-08
14 王五 2 54 15 7 2012-06-05
15 王六 3 33 16 15 2012-02-03
16 王七 3 44 17 16 2012-09-10
18 王九 3 56 19 19 2012-03-09
19 关一 3 34 20 21 2012-06-07
表grade id为自动增长
select id, gradename,gradeid,gradetypeid,gradetypename,meteid from [grade]
结果
1 一年级 1 1 小学 1
3 三年级 3 2 初中 9
4 二年级 5 2 初中 8
5 一年级 1 3 高中 10
6 二年级 2 3 高中 4
7 一年级 1 2 初中 7
9 二年级 2 2 初中 8
10 三年级 3 3 高中 12
11 六年级 6 1 小学 6
12 二年级 2 3 高中 11
13 五年级 5 1 小学 5
15 一年级 1 2 初中 7
16 一年级 1 3 高中 15
18 二年级 2 3 高中 16
19 三年级 3 3 高中 19
20 一年级 1 3 高中 21
我想得到的结果是 高中 一年级 ,二年级,三年级 brownum最大的前两名数据
id name gradename gradetypename age
19 关一 一年级 高中 20
15 王六 一年级 高中 16
11 李二 二年级 高中 19
16 王七 二年级 高中 17
18 王九 三年级 高中 19
8 张十 三年级 高中 19
from
(
select a.ID,a.name,gradename,gradetypename,age,ROW_NUMBER() over(partition by gradename order by brownum desc) as rowid
from user as a inner join grade as b on a.gradetypeid=b.gradetypeid
where b.gradetypename='高中' and gradename in ('一年级','二年级','三年级')
) as TB
where rowid<3
FROM #users a JOIN #grade b ON a.gradetypeid=b.gradetypeid
WHERE [gradetypename]='高中'你看看结果
(
SELECT a.id ,name, gradetypename, gradename ,brownum, age,
row=ROW_NUMBER()OVER(PARTITION BY [gradename] ORDER BY brownum DESC)
FROM #users a JOIN #grade b ON a.gradetypeid=b.gradetypeid--这里可能还要加 and a.[meteid]=b.[meteid]
WHERE [gradetypename]='高中'
) t
WHERE row<=2