sql中同一个表的上下两行之间的某个字段相减有关问题
来源:互联网 发布:苹果手机短信恢复软件 编辑:程序博客网 时间:2024/06/05 05:03
sql中同一个表的上下两行之间的某个字段相减问题
各位,现在我遇到这样一个问题,如下描述:
表A结构如下:
job gx_id start_time end_time
0001011-3-1 10 2010-5-10 10:00:00 2010-5-10 15:23:10
0002695-1-2 30 2010-5-10 15:30:00 2010-5-10 18:00:00
0003625-6-2 60 2010-5-11 07:20:05 2010-5-11 11:30:00
0009658-8-1 20 2010-5-12 09:20:30 2010-5-13 12:10:00
......
我想得到表A第一行的 "end_time "与第二行的 "start_time "相减的值,第二行的 "end_time "与第三行的 "start_time "相减的值,第三行的 "end_time "与第四行的 "start_time "相减的值,以此类推,请问怎样实现呢?
------解决方案--------------------------------------------------------
各位,现在我遇到这样一个问题,如下描述:
表A结构如下:
job gx_id start_time end_time
0001011-3-1 10 2010-5-10 10:00:00 2010-5-10 15:23:10
0002695-1-2 30 2010-5-10 15:30:00 2010-5-10 18:00:00
0003625-6-2 60 2010-5-11 07:20:05 2010-5-11 11:30:00
0009658-8-1 20 2010-5-12 09:20:30 2010-5-13 12:10:00
......
我想得到表A第一行的 "end_time "与第二行的 "start_time "相减的值,第二行的 "end_time "与第三行的 "start_time "相减的值,第三行的 "end_time "与第四行的 "start_time "相减的值,以此类推,请问怎样实现呢?
------解决方案--------------------------------------------------------
- SQL code
select datediff(mi,b.start_time ,a.end_time)from (select id=row_number()over(order by getdate()),* from tb)a, (select id=row_number()over(order by getdate()),* from tb)bwhere a.id=b.id-1------解决方案--------------------------------------------------------
- SQL code
------------------------------------------------------------------------------------ Author : htl258(Tony)-- Date : 2010-05-10 11:37:00-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)-- Blog : http://blog.csdn.net/htl258------------------------------------------------------------------------------------> 生成测试数据表: [tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOCREATE TABLE [tb] ([job] [nvarchar](20),[gx_id] [int],[start_time] [datetime],[end_time] [datetime])INSERT INTO [tb]SELECT '0001011-3-1','10','2010-5-10 10:00:00','2010-5-10 15:23:10' UNION ALLSELECT '0002695-1-2','30','2010-5-10 15:30:00','2010-5-10 18:00:00' UNION ALLSELECT '0003625-6-2','60','2010-5-11 07:20:05','2010-5-11 11:30:00' UNION ALLSELECT '0009658-8-1','20','2010-5-12 09:20:30','2010-5-13 12:10:00'--SELECT * FROM [tb]--我想得到表A第一行的 "end_time "与第二行的 "start_time "相减的值,第二行的 "end_time "与第三行的 "start_time "相减的值,--第三行的 "end_time "与第四行的 "start_time "相减的值,以此类推,请问怎样实现呢?-->SQL查询如下:;with t as( select rn=row_number()over(ORDER by job),* from tb)select a.*,val=datediff(mi,a.end_time,b.bstart_time)from t a outer apply( select bstart_time=start_time from t where a.rn=rn-1 ) b/*rn job gx_id start_time end_time val-------------------- -------------------- ----------- ----------------------- ----------------------- -----------1 0001011-3-1 10 2010-05-10 10:00:00.000 2010-05-10 15:23:10.000 72 0002695-1-2 30 2010-05-10 15:30:00.000 2010-05-10 18:00:00.000 8003 0003625-6-2 60 2010-05-11 07:20:05.000 2010-05-11 11:30:00.000 13104 0009658-8-1 20 2010-05-12 09:20:30.000 2010-05-13 12:10:00.000 NULL(4 行受影响)*/
- sql中同一个表的上下两行之间的某个字段相减有关问题
- 查询同一个表中重复的字段
- sql中,将同一个表中两个类型一样的字段的值互换 以及 将同一个表中的一个字段的值复制给另一个字段
- SQL两表之间:根据一个表的字段更新另一个表的字段
- SQL两表之间:根据一个表的字段更新另一个表的字段
- SQL两表之间:根据一个表的字段更新另一个表的字段
- SQL两表之间:根据一个表的字段更新另一个表的字段
- 取某个表某个字段的内容的sql函数
- Oracle中查询同一个日期字段,格式不同的问题
- Sql 查询同一个表中两个字段里相同的数据
- 68 sql 查找表中同一个字段出现的重复项次数 视图
- 查询表中某个字段不重复的所有数据的常用两种方法
- SQL找出表中某个字段无重复值的三个字段
- sql查找表中某个字段值相同,其他字段取最大值的记录
- SQL Server 2005的两表之间 的问题
- 同一个页面中两个框架之间的链接问题
- Oracle两张数据表之间某个指定字段的单向和双向同步
- 更新表中某个字段的部分内容
- gdb 断点设置方法
- Android升级ADT22后会报ClassNotFoundException的原因分析
- Linux makefile 教程 非常详细,且易懂
- 1+N问题及解决
- 使用vimdiff 替换svn diff
- sql中同一个表的上下两行之间的某个字段相减有关问题
- ubuntu自启动默认登录(不需要输入密码)
- 关于SAFEARRAY的,转载了篇文章,比较全
- 如何把jar包发布到maven私服
- 用户态到内核态切换分析
- RRiBbit 学习记录
- alpha混合技术
- 平衡二叉树
- GOOD_Web开发中的Listener和Filter