表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,stype from [grade]
结果
1 一年级 1 1 小学 1 1
3 三年级 3 2 初中 9 2
4 二年级 5 2 初中 8 3
5 一年级 1 3 高中 10 3
6 二年级 2 3 高中 4 2
7 一年级 1 2 初中 7 3
9 二年级 2 2 初中 8 1
10 三年级 3 3 高中 12 2
11 六年级 6 1 小学 6 3
12 二年级 2 3 高中 11 1
13 五年级 5 1 小学 5 2
15 一年级 1 2 初中 7 3
16 一年级 1 3 高中 15 1
18 二年级 2 3 高中 16 2
19 三年级 3 3 高中 19 3
20 一年级 1 3 高中 21 1
我想得到的结果是 高中 一年级 ,二年级,三年级 brownum最大的前两名同学,若同年级stype相同则过滤查下一条数据
id name gradename gradetypename age stype
19 关一 一年级 高中 20 1
13 李四 一年级 高中 10 3
11 李二 二年级 高中 19 1
16 王七 二年级 高中 17 2
18 王九 三年级 高中 19 3
8 张十 三年级 高中 19 2 这里的 高中一年级李四 brownum没有高中一年级的王六 brownum大 但 王六与关一的stype是相同的 所以舍去王六。
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,stype from [grade]
结果
1 一年级 1 1 小学 1 1
3 三年级 3 2 初中 9 2
4 二年级 5 2 初中 8 3
5 一年级 1 3 高中 10 3
6 二年级 2 3 高中 4 2
7 一年级 1 2 初中 7 3
9 二年级 2 2 初中 8 1
10 三年级 3 3 高中 12 2
11 六年级 6 1 小学 6 3
12 二年级 2 3 高中 11 1
13 五年级 5 1 小学 5 2
15 一年级 1 2 初中 7 3
16 一年级 1 3 高中 15 1
18 二年级 2 3 高中 16 2
19 三年级 3 3 高中 19 3
20 一年级 1 3 高中 21 1
我想得到的结果是 高中 一年级 ,二年级,三年级 brownum最大的前两名同学,若同年级stype相同则过滤查下一条数据
id name gradename gradetypename age stype
19 关一 一年级 高中 20 1
13 李四 一年级 高中 10 3
11 李二 二年级 高中 19 1
16 王七 二年级 高中 17 2
18 王九 三年级 高中 19 3
8 张十 三年级 高中 19 2 这里的 高中一年级李四 brownum没有高中一年级的王六 brownum大 但 王六与关一的stype是相同的 所以舍去王六。
解决方案 »
- 问个SQL语句怎么写
- 请问下,明细账的SQL处理,谢谢。
- 分组--消除重复记录查询....各位大虾...help
- 紧急求救:数据修改错误了,现在急求一个SQL语句
- 为什么bcp "SELECT ID,SUBSTRING(ExternalKey,7,32),NodeID,PM_Product_ID,LB_Product_ID,StyleTypeID FROM ExternalMapping" out "Exter
- 插入数据的问题
- 如何对自增长得字段赋值
- mysql 几个表数据合并在一起 出现主键id 重复 怎么办
- 关于动态SQL的问题,请高手帮忙,分不够再加(在线等待)
- 交流--数据库中存/取文件
- sql2008英文版还原中文版sql2000的数据库,会出现乱码吗?
- Create table
SELECT * FROM
(
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这里没有判断stype 。就不知道如果判断怎么写
结果
id name gradename gradetypename age
19 关一 一年级 高中 20
15 王六 一年级 高中 16
11 李二 二年级 高中 19
16 王七 二年级 高中 17
18 王九 三年级 高中 19
8 张十 三年级 高中 19