有表A 
sid(自己标识列) sName(姓名) Skemu(科目) Score(成绩)
1 asdas 数学 85
2 asdas 语文 65
3 ddddd 数学 55
4 ddddd 语文 66
`
`
`
有N条数据..
问题1:
求第10 到 15行的数据...
问题2: 
求"每门成绩大于85分"同学的姓名
问题3:
要求如下显示结果集
姓名 数学 语文
asdas 85 65
ddddd 55 66

解决方案 »

  1.   

    1
    SELECT TOP 5 * FROM (SELECT TOP 15 * FROM TB ORDER BY SID) AS T ORDER BY ID DESC
      

  2.   

    2
    SELECT * FROM TB T 
    WHERE NOT EXISTS(SELECT 1 FROM TB WHERE Skemu=T.Skemu AND Score<85) 
      

  3.   

    ...问题1:
    求第10 到 15行的数据...-------------------------------------
    应该是 top 6 吧
      

  4.   

    貌似还要考虑每门课程都大于85吧:
    declare @table table(sid int, sName varchar(10), Skemu varchar(10), Score int)
    insert into @table
    select 1, 'asdas','math' ,86 union all
    select 2, 'asdas', 'lan', 95 union all
    select 25, 'asdas', 'eng', 95 union all
    select 3, 'ddddd', 'math', 95 union all
    select 4, 'ddddd', 'lan', 66select sname
    from @table
    where score>85 
    group by sname
    having count(sname)=(select count(distinct(skemu)) from @table)
      

  5.   

    3
    select 
      sName,
      max(case Skemu when '数学' then Score else '' end) as '数学' ,
      max(case Skemu when '语文' then Score else '' end) as '语文' 
    from
      tb
    group by
      sName