求一 存储过程写法???
时间:2011-11-28
来源:互联网
基本休息时间表: StopName StartTime EndTime 早 07:50 08:20 中 11:30 12:20 晚 17:50 18:30 夜 12:30 01:30 生产表: col1 TimeIn A001 2011-01-21 07:48:03 A002 2011-01-21 07:48:33 A003 2011-01-21 07:49:23 A004 2011-01-21 08:20:30 A005 2011-01-21 08:21:00 A006 2011-01-21 08:22:36 A007 2011-01-21 08:23:22 A008 2011-01-21 08:24:03 时间差统计: col1 TimeIn NetTime StandardTime A001 2011-01-21 07:48:03 0 30 A002 2011-01-21 07:48:33 20 30 A003 2011-01-21 07:49:23 0 30 A004 2011-01-21 08:20:30 0 30 A005 2011-01-21 08:21:00 6 30 A006 2011-01-21 08:22:36 16 30 A007 2011-01-21 08:23:22 9 30 A008 2011-01-21 08:24:01 0 30 51
我要统计的是 NetTime时间的总和。
两个TimeIn的标准时间差是30 ,如果超出标准时间就统计到 NetTime中
最后再统计出来..
当遇到标准休息时间的,就没有TimeIn 进入.标准休息时间不需要统计(NetTime)总时间内.
我希望用一个存储过程来实现,当我传入 两个时间 到该存储过程中时 ,
它就把(NetTime)的时间总和统计出来 。
作者: yinliaobao 发布时间: 2011-11-28
这个指的是哪两个TIMEIN?
作者: fredrickhu 发布时间: 2011-11-28
A002的TimeIn - A001的TimeIn
休息时间除外...
作者: yinliaobao 发布时间: 2011-11-28
作者: yinliaobao 发布时间: 2011-11-28
;with cte as ( select *,row_number(order by col1) as num from 生产表 ) select a.col1 ,a.TimeIn ,NetTime = isnull(datediff(second,a.TimeIn,b.TimeIn) - 30,0) - isnull(datediff(second,cast(convert(varchar(10),a.TimeIn,120) + ' ' + c.StartTime as datetime),cast(convert(varchar(10),a.TimeIn,120) + ' ' + c.EndTime as datetime)) ,StandardTime = 30 from cte a left join cte b on a.num = b.num - 1 left join 基本休息时间表 c on cast(convert(varchar(10),a.TimeIn,120) + ' ' + c.StartTime as datetime) between a.TimeIn and b.TimeIn
要汇总的话,再用个cte,union all一下就可以
作者: Haiwer 发布时间: 2011-11-28
SQL code
;with cte as (
select *,row_number(order by col1) as num
from 生产表
)
select a.col1
,a.TimeIn
,NetTime = isnull(datediff(second,a.TimeIn,b.TimeIn) - 30,0)
- isnull(datediff(s……
海爷V5
作者: fredrickhu 发布时间: 2011-11-28
SQL code
;with cte as (
select *,row_number(order by col1) as num
from 生产表
)
select a.col1
,a.TimeIn
,NetTime = isnull(datediff(second,a.TimeIn,b.TimeIn) - 30,0)
- isnull(datediff(s……
速度
作者: szstephenzhou 发布时间: 2011-11-28
SQL code
;with cte as (
select *,row_number(order by col1) as num
from 生产表
)
select a.col1
,a.TimeIn
,NetTime = isnull(datediff(second,a.TimeIn,b.TimeIn) - 30,0)
- isnull(datediff(s……
作者: szstephenzhou 发布时间: 2011-11-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28