SQL Server 中的rowid

      在SQL Server中没有像Orcal中的rowid,但是可以运用一定的变通达到这个效果。

           在群里面看到有人提出一个这样的问题,要求写试图,是关于SQL Server 2000的,其中就要用到rowid。群里面的高手用Orcal写出来了,不过用SQL Server还是有一些问题,所以转换一下就好了,从网上找了一些资料,整合了一下,以备后用。

           问题:

       求一视图:表TB中有三个字段,

 FN     ST     EN

A       3       4

A       5       9

 A       5       6

A       7       8

A      11     14

       三个字段分别的意思是FN:名称,ST开始工作,EN结束工作。现在要求计算它的工作时间,如表中:第一行工作时间是4-3=1,第二行工作时间是9-5=4,第三行由于5到6在第二行的5到9之间,所以重复,不计算,第四行7到8也在5到9之间,所以也是重复,也不计算,第五行不重复,工作时间是14-11=3,故工作总时间是1+4+3=8,那么上面的问 题怎样用视图来表示出来呢?

       建立数据库表:      

      create table flow ( FN varchar(10), ST int, EN int)

      建立临时表,其中包含rowid

select identity(int,1,1) as rowid,flow.*
into temptable
from flow

创建查询

select FN, sum(EN-ST) en_sb from temptable where temptable.rowid not in(
select a.rowid from temptable a,temptable b where a.ST>b.ST and a.EN<b.EN and a.FN is not null)
group by FN

结果:

FN    en_sb

A         9

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值