zoukankan      html  css  js  c++  java
  • SQLServer 实现rownum 的功能

    今天想把最近做的项目的Oracle数据库换成SqlServer数据库,在转换的过程中出现一点问题,就是输出表的行号的时候出现了问题,在Oracle数据库中,可以直接通过它的rownum来完成,语句如下

    select rownum as num,t.occurrenceid,t.occurrencenum2,t.registerdate,b.occtype,t.AMOUNT,t.occresult,t.occtime,t.yr,t.zi,t.hao,t.step as step from occurrence t left join occ_type b on t.occtypeid = b.occtypeid where t.step<3 and t.Departmentid='101000' order by t.registerdate desc

    但是放到SqlServer2005中就会出错看,说是rownum有错误,最后才知道在SqlServer查询行号不是那样查的,是用SqlServer的row_number()来查询的

    select row_number() over(order by t.registerdate desc) as num,t.occurrenceid,t.occurrencenum2,t.registerdate,b.occtype,t.AMOUNT,t.occresult,t.occtime,t.yr,t.zi,t.hao,t.step as step from occurrence t left join occ_type b on t.occtypeid = b.occtypeid where t.step<3 and t.Departmentid='101000'

    解释:

    1 此方法把括号里的查询结果放到变量:temp 里面( 我也不确定是不是变量), 并用row_number() 函数进行一个行号跟踪, 再用over 函数进行一个列的排序规则( 是这必须的), 并指定列名为'rownum'

    2 紧接着在下面的语句可以对 'rownum' 进行一个指定行号的查询

     

    其实显示序号除了采用sql处理外,我们也可以在程序代码中实现,比如sql2000可能使用sql就不行了,那么怎么办呢,可以看看下面的例子:

     

    View Code
          string sql = "select * from jh_job where jh_check = 1 order by jh_pdate desc";
            DataTable dt 
    = LYDAO.SqlText.ExecuteDataset(sql).Tables[0];

            DataColumn dc 
    = new DataColumn("num");
            dt.Columns.Add(dc);
            
    for (int i = 0; i < dt.Rows.Count; i++)
            {


                DataRow row 
    = dt.NewRow();
                
    int j=i+1;
                
    if (i < 10)
                {
                  
                dt.Rows[i][
    "num"]= "0" + j;
                }
                
    else
                {
                   
                dt.Rows[i][
    "num"]=j;
                }
            }

     

    然后绑定dt,在页面中读出num即可.. 

     

     

    多思考,多创新,才是正道!
  • 相关阅读:
    友链
    Vue打包后处理跨域
    es6 Promise
    express get和post数据
    Nodejs登陆注册应用
    bootstrap按钮
    vue-router
    vue--transition多个元素运动
    $ git push -u origin masterremote时出现错误: error: GH007: Your push would publish a private email address.
    vue.js监听
  • 原文地址:https://www.cnblogs.com/shuang121/p/1981827.html
Copyright © 2011-2022 走看看