各位CSDN 的朋友,你们有没有写过关于 SQL 的行记录的相关语句 如:
表  A
名称   成绩
张三    15
李四    20
王五    9
赵六    11
孙气    18
我想直接一条SQL 语句 用 成绩 正序排序 返回  张三 位于第几行数据
  和直接一条SQL 语句 用 成绩 正序排序 返回  第3行数据是谁

解决方案 »

  1.   

    --1select count(1)+1 from A order by 成绩
      

  2.   

    DECLARE @TB TABLE([名称] NVARCHAR(2), [成绩] INT)
    INSERT @TB 
    SELECT N'张三', 15 UNION ALL 
    SELECT N'李四', 20 UNION ALL 
    SELECT N'王五', 9 UNION ALL 
    SELECT N'赵六', 11 UNION ALL 
    SELECT N'孙气', 18;WITH CET AS
    (
    SELECT *,PX=ROW_NUMBER() OVER (ORDER BY [成绩])
    FROM @TB 
    )
    SELECT PX FROM CET WHERE [名称]=N'张三'
    --SELECT [名称] FROM CET WHERE PX=3
      

  3.   

    修正
    select 
      count(1)+1 
    from A 
    where 成绩>(select 成绩 from A where 名称='张三')
    order by 成绩
      

  4.   


    1:
    Select  [student_name]
           ,[order] as'行数' 
    from(
    SELECT [student_name] 
       ,grade     
      ,row_number()over(Order by[grade]) as [order]
      FROM [grade]
    ) as T
    where T.[student_name]='张三'
    2:
    Select  [student_name]
           ,[order] as'行数' 
    from(
    SELECT [student_name] 
       ,grade     
      ,row_number()over(Order by[grade]) as [order]
      FROM [grade]
    ) as T
    where T.[order]=3
      

  5.   

    谢谢大家的回答
    最终采用了 jwdream2008 的回答,他的语句则可以直接一条SQL语句返回我需要的功能