我希望排序出运动员的名次和道号`但我应该如何根据成绩插入名次和道号?
CompetitionID(运动会ID) Mark(成绩) Rank(名次)  WayNumber(道号)   
   001                    12.00                                  
   003                    13.00                                
   002                    14.00                                
   004                    15.00我已经用
select * from TrackGame where GameBout = 决赛 and  GroupNumber = " + Convert.ToString(GroupNumber) + "order by Mark
问题:
1.我应该如何插入名次 如:1234 如何插入道号 如:4536
2.我应该再哪里放入子函数

解决方案 »

  1.   

    10万火急啊!!!!!!要上交的项目`要编写算法的`
    CompetitionID(运动会ID) Mark(成绩) Rank(名次)  WayNumber(道号)   
       001                    12.00        1             4             
       003                    13.00        2             5          
       002                    14.00        3             3          
       004                    15.00        4             6我希望能变成这样`
    但我不知道运动员的ID`我要在空表里设计好`请问各位大侠`救急啊~~~~~
      

  2.   

    我的意思是如何用SQL语句来插入数据`就如上表的第一行第三列插入数据1`
    第一行第三列插入数据4`
      

  3.   

    /*LZ不知道你的道号是怎么来的,没看明白?
      名次可以这样???
    */
    ---创建测试环境
    Declare @T Table(运动会ID Varchar(4),成绩 Numeric(4,2),
                     名次 int,道号 int)   
      Insert @T Select '001',   12.00,Null,Null                                  
      Union All Select '003',   13.00,Null,Null                                
      Union All Select '002',   14.00,Null,Null                                
      Union All Select '004',   15.00,Null,Null
    Select * From @T---因为你的数据已经是按照成绩排序好了
    --更新
    Update @T
           Set 名次=(Select Count(1) From @T Where 成绩<=A.成绩)
    From @T A---查看更新后的结果
    Select * From @T--结果
    /*
    运动会ID 成绩     名次          道号          
    ----- ------ ----------- ----------- 
    001   12.00  1           NULL
    003   13.00  2           NULL
    002   14.00  3           NULL
    004   15.00  4           NULL(所影响的行数为 4 行)
    */
      

  4.   

    道号就是每个运动员`根据名次来排位的跑道号码
    就象第一名跑跑道4`第二名跑跑道5
    我应该如何写进去`//成绩<=A.成绩//请教一下`A是什么意思?
      

  5.   

    --按国际大型体育运动会跑道排位法,1-4,2-5,3-3,4-6,5-2,6-7,7-1,8-8.不知道是不是你需要的?create table tb(CompetitionID varchar(10), Mark decimal(18,2),Rank int,WayNumber int)
    insert into tb values('001',12.00,0,0 )
    insert into tb values('002',13.00,0,0 )
    insert into tb values('003',14.00,0,0 )
    insert into tb values('004',15.00,0,0 )
    insert into tb values('005',16.00,0,0 )
    insert into tb values('006',17.00,0,0 )
    insert into tb values('007',18.00,0,0 )
    insert into tb values('008',19.00,0,0 )
    goselect * , waynumber =
      case rank 
        when 1 then 4
        when 2 then 5
        when 3 then 3
        when 4 then 6
        when 5 then 2
        when 6 then 7
        when 7 then 1
        when 8 then 8
      end
    from 
    (
      SELECT competitionid ,  , rank=(SELECT COUNT(DISTINCT ) FROM tb WHERE  <= a.) FROM tb a
    ) tdrop table tb
    /*
    competitionid                  rank        waynumber   
    ------------- -------------------- ----------- ----------- 
    001           12.00                1           4
    002           13.00                2           5
    003           14.00                3           3
    004           15.00                4           6
    005           16.00                5           2
    006           17.00                6           7
    007           18.00                7           1
    008           19.00                8           8(所影响的行数为 8 行)*/