日期:2014-05-18 浏览次数:20563 次
--> 测试数据:[tbl]
go
if object_id('[tbl]') is not null
drop table [tbl]
go
create table [tbl](
[PCBCode] varchar(3),
[LineCode] varchar(5),
[ProcessCode] varchar(2),
[OperTime] datetime,
[Operator] varchar(7)
)
go
insert [tbl]
select 'A01','Line1','NO','2012-03-15 09:55:37','Person1' union all
select 'A01','Line1','CS','2012-03-15 10:02:54','Person2' union all
select 'A01','Line1','OP','2012-03-15 10:09:10','Person3' union all
select 'A01','Line1','AG','2012-03-15 10:15:19','Person4' union all
select 'A01','Line1','CP','2012-03-15 11:01:19','Person5' union all
select 'A02','Line1','NO','2012-03-15 10:00:25','Person1' union all
select 'A02','Line1','CS','2012-03-15 10:05:22','Person2' union all
select 'A02','Line1','OP','2012-03-15 10:12:19','Person3' union all
select 'A02','Line1','AG','2012-03-15 10:20:33','Person4' union all
select 'A02','Line1','CP','2012-03-15 11:30:55','Person5'
select * from tbl
/*
上面为工序流程表,有5道工序,目前产出的两个产品A01和A02,
上一道工序到下一道工序之间有间隔时间,我想要计算产线1,
也就是Line1的工序瓶颈,也就是生产最慢的环节,以及该产线的产能
(注:产能计算【小时】=3600/NO工序消耗时间S+...+AG工序消耗的时间S)
*/
;with t
as(
select ROW_NUMBER()over(partition by [PCBCode],[LineCode]
order by [OperTime]) as id,
*,[OperTime] as [endtime] from tbl
),
m as(
select id,[PCBCode],[LineCode],[ProcessCode],[Operator],[OperTime],endtime,
DATEDIFF(mi,[OperTime],[endtime]) as haoshi
from t where id=1
union all
select a.id,a.[PCBCode],a.[LineCode],a.[ProcessCode],a.[Operator],a.[OperTime],a.endtime,
DATEDIFF(mi,b.[OperTime],a.[endtime])
from t a
inner join m b on a.id=b.id+1 and a.[PCBCode]=b.[PCBCode]
)
select [PCBCode],[LineCode],[ProcessCode],[OperTime],[Operator],haoshi
from m order by [PCBCode]
/*
PCBCode LineCode ProcessCode OperTime Operator haoshi
A01 Line1 NO 2012-03-15 09:55:37.000 Person1 0
A01 Line1 CS 2012-03-15 10:02:54.000 Person2 7
A01 Line1 OP 2012-03-15 10:09:10.000 Person3 7
A01 Line1 AG 2012-03-15 10:15:19.000 Person4 6
A01 Line1 CP 2012-03-15 11:01:19.000 Person5 46
A02 Line1 NO 2012-03-15 10:00:25.000 Person1 0
A02 Line1 CS 2012-03-15 10:05:22.000 Person2 5
A02 Line1 OP 2012-03-15 10:12:19.000 Person3 7
A02 Line1 AG 2012-03-15 10:20:33.000 Person4 8
A02 Line1 CP 2012-03-15 11:30:55.000 Person5 70
*/
我已经把每个产品的工序之间的时间间隔(haoshi)给计算出来了,要找最大的你自己会了吧,我不清楚你的最大的是怎么个取法,也不知道要取出哪些字段,另外产能计算你也可以在我的结果上计算就好了
------解决方案--------------------
create view myview
as
select * from T
就可以生成视图了