SQLServer 实现rownum 的功能

本文介绍了从Oracle数据库迁移至SqlServer数据库过程中,如何调整SQL语句以实现行号的正确输出。具体展示了Oracle中rownum与SqlServer中row_number()的区别,并提供了一种在程序代码中实现序号的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天想把最近做的项目的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就不行了,那么怎么办呢,可以看看下面的例子:

 

ExpandedBlockStart.gifView 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即可.. 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值