关于分页查询和行转列结合使用的问题我的原表格 grades 是这样的name subject grade张三 语文 72张三 数学
关于分页查询和行转列结合使用的问题
我的原表格 grades 是这样的
name subject grade
张三 语文 72
张三 数学 100
张三 英语 75
李四…………………
……………………
行转列
SQL codeselect name 姓名, max(case subject when '语文' then grade else 0 end) 语文, max(case subject when '数学' then grade else 0 end) 数学, max(case subject when '英语' then grade else 0 end) 英语from grades group by name
[size=14px][color=#FF9900]这上面的是行转列 成功之后 表格式这样的
----------------------------------------
姓名 语文 数学 英语
张三 72 100 75
李四 55 66 77
王五 78 69 53
赵六 21 37 58
…………
之后 如何用下面的这种分页查询 结合上面行转列 完成 将行转列当成子表(子查询) 的分页查询 (要求不能创建新表或者新视图之类的,就用SQL查询语句)
分页查询[/size][/color]
SQL codeselect top 3 * from gradeswhere name not in(select top 3 name from grades order by name)order by name
最后效果是 4-6条记录
---------大概效果-----------
姓名 语文 数学 英语
赵六 21 37 58
朱七 72 100 75
陈八 78 69 53
[解决办法]select top 3 * from (select name 姓名,
max(case subject when '语文' then grade else 0 end) 语文,
max(case subject when '数学' then grade else 0 end) 数学,
max(case subject when '英语' then grade else 0 end) 英语
from grades
group by name
)t where 姓名 not in(select top 3 姓名 from
(select name 姓名,
max(case subject when '语文' then grade else 0 end) 语文,
max(case subject when '数学' then grade else 0 end) 数学,
max(case subject when '英语' then grade else 0 end) 英语
from grades
group by name
)t
order by 姓名)
终究还是自己啊