我有一个Access数据表 chengji字段
id 自动编号
kemu 科目
fenshu 分数
xingming 姓名记录
id   kemu   fenshu  xingming
1     语文     80     张三
2     语文     67     李四
3     语文     80     老五
4     语文     90     陈六
5     语文     52     刘七
6     语文     80     王八请问如何进行排名?并将得到的名次写入到号一个表中去?90     陈六   第1名
80     张三   第2名
80     老五   第2名
80     王八   第2名
67     李四   第5名
52     刘七   第6名请问如何得到上面这样子的排名?要不要在原来的数据表中添加一个名次的字段?
我是学C#的,请说的详细一点点,因为很菜刚学,谢谢大家,另外不知道我的数据库设计是不是科学,如果思路不对还请大家多多指出,谢谢!

解决方案 »

  1.   

    要不要在原来的数据表中添加一个名次的字段? 
    不用,
    试试  select * form chengji order by fenshu desc
    通过DataSet得到数据集以后,做循环,插入到新表里面
      

  2.   

    在程序中,先用select * form chengji order by fenshu desc 将数据放到一个DataTable中,
    然后在DataTable添加一个int列,再循环判断分数的名次,最后再插入到数据库中。
      

  3.   

    select *,(select count(*)+1 from 记录 where fenshu>a.fenshu) from 记录 a
      

  4.   

    CREATE #TEMP
    (
        ID INT IDENTITY(1,1),
        fenshu  INT,
        xingming
        
    )
    SELECT 
         fenshu,
         xingming
    INTO #TEMP
    FROM chengji ORDER BY fenshu   
    SELECT 
         fenshu,
         xingming,
       mingci = '第'+str([ID])+'名'
    FROM #TEMPDROP #TEMP
    这样就可以了,看看是不是你要的效果。手写没测试
      

  5.   

    select * into newtable from chengji再在newtable里添加两列  一列叫作编号设为identity(1,1)  别一列假设叫做名次 数据类型为varchar
    update newtable
    set  名次='第'+str(编号)+'名'
      

  6.   

    刚才测试了一下,这个方法不错:
    create table #t (fs int,id int identity (1,1))
    insert into #t(fs) select distinct fenshu from chengji order by fenshu desc
    select cj.*,'第'+cast(#t.id as varchar)+'名' from chengji cj
    join #t on #t.fs=cj.fenshu
    order by #t.id
    drop table #t
      

  7.   

    你的库不好
    成绩、课程、个人信息分开存放
     个人表(personid,姓名)
     课程表(courseid,名称)
     成绩表(personid,courseid,result)
      

  8.   

    请问这个怎么用啊?我是学用C#的下面是排名(paiming.aspx.cs)的空文件,上面的代码怎样放到哪里?using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;using System.Data.OleDb;public partial class _paiming : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    //非常感谢大家的指教
        }
    }
      

  9.   

    存储过程Create proc sp_SChengjiInfo
    AS
    CREATE #TEMP
    (
        ID INT IDENTITY(1,1),
        fenshu  INT,
        xingming
        
    )
    SELECT 
         fenshu,
         xingming
    INTO #TEMP
    FROM chengji ORDER BY fenshu   
    SELECT 
         fenshu,
         xingming,
       mingci = '第'+str([ID])+'名'
    FROM #TEMPDROP #TEMP
      

  10.   

    如果是想在页面上显示查询的结果,在页面上放一个gridviewusing System; 
    using System.Data; 
    using System.Configuration; 
    using System.Collections; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class _paiming : System.Web.UI.Page 

        protected void Page_Load(object sender, EventArgs e) 
        { 
            if (!this.IsPostBack)
           {
               Bind();
           }
        }         private void Bind()
            {
                using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conStr"].ToString()))
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "sp_SChengJiInfo";   //指定存储过程名字
                      cmd.CommandType = CommandType.StoredProcedure;  //指定类型为存储过程
                      cmd.Connection = con;
                    SqlDataAdapter sda = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    this.gvChengJi.DataSource = ds.Tables[0].DefaultView;
                    this.gvChengJi.DataBind();
                    ds.Dispose();
                }
            }} 
      

  11.   

    如果不是很复杂的话 order by  fenshu 就OK了!
      

  12.   

    试试这个:select *,paiming=(select DISTINCT count(fenshu)+1 from  chengji where fenshu>a.fenshu) from chengji a order by paiming
      

  13.   


    select *,paiming=(select count(b.fenshu)+1 from  (select  DISTINCT fenshu from chengji where fenshu>a.fenshu) as b) from chengji a order by paiming不好意思,刚才错了,这样看可不可以
      

  14.   

    第一种结果
    2 lisi    88.00 1
    4 chenliu  88.00 1
    1 zhangsan 85.00 3
    3 wangwu   76.00 4
    第二种结果
    2 lisi    88.00 1
    4 chenliu  88.00 1
    1 zhangsan 85.00 2
    3 wangwu   76.00 3
      

  15.   

    存储过程同13楼,对应程式14楼;
    sql语句同20楼,对应程式如下:aspx界面:
    ...
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="xingming" HeaderText="姓名" SortExpression="xingming" />
                    <asp:BoundField DataField="fenshu" HeaderText="分数" SortExpression="fenshu" />
                    <asp:BoundField DataField="paiming" HeaderText="排名" SortExpression="paiming" />
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    ...apsx.cs后台:
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _paiming : System.Web.UI.Page 

        protected void Page_Load(object sender, EventArgs e) 
        { 
           if (!this.IsPostBack)
           {
               GridView1_Bind();
           }
        }     private void GridView1_Bind()
        {
           string myconn = ConfigurationManager.ConnectionStrings["ConStr"].ToString();//web.config
           SqlConnection conn = new SqlConnection(myconn);
           conn.Open();
           string sqlstr = "select xingming,fenshu,paiming='第'+convert(varchar(20),(select count(b.fenshu)+1 from "
                         + "(select  distinct fenshu from chengji where fenshu>a.fenshu)b))+'名' from chengji a order by paiming";
           SqlDataAdapter da = new SqlDataAdapter(sqlstr,conn);
           DataSet ds = new DataSet();
           da.Fill(ds,"chengji");
           GridView1.DataSource = ds.Tables["chengji"].DefaultView;
           GridView1.DataBind();
        }
    } web.config添加:
    <connectionStrings>
    <add name="ConStr" connectionString="Data Source=你的计算机名;Initial Catalog=你的数据库;Persist Security Info=True;User ID=数据库用户名;Password=数据库密码" providerName="System.Data.SqlClient"/>
    </connectionStrings>
      

  16.   

    请问 23 楼的
    我用了你的23楼代码出现如下错误da.Fill(ds, "chengji");
    至少一个参数没有被指定值。请问是不是SQL语句错了?另外,原来在我的 chengji 表中并没有 paiming 字段,是不是要先加上去?
      

  17.   

    select * form chengji order by fenshu
      

  18.   

    我用了你的23楼代码出现如下错误 da.Fill(ds, "chengji"); 
    至少一个参数没有被指定值。 请问是不是SQL语句错了?
      

  19.   

    不好意思,前两天拍婚纱照去了,外景,不在本地~SQL是没有问题啦~
    你先检查一下using System.Data.SqlClient;有没有添加上去~
    然后确认chengji是你提供的表名,实际的表名是不是也是这个~
    至于那个排名嘛,那个是从表中抓出来的数据,没有实际的栏位,是不用添加的~
    如果还有问题,随时联络我~
    msn:[email protected]