2011-09-23 110 views
4

我有两个表格;一个记录由操作员记录,另一个记录由操作员运行的机器存储的数据以记录机器的时间。来自运营商的数据是机器每小时运行的最低记录(有时更多)。停机时存储的数据是在机器停机或运行时数据记录的恒定流。用SQL比较两个表格

我想要做的是从运营商获取数据,并将其与停机时间的系统比较,以确保运营商正在采取每隔一小时权重,一小时一次,使机器操作。如果机器停机一个小时,则不会有操作员记录。如果机器在小时间隔内的任何时间段内都处于活动状态,则应该有该小时间隔的记录。为此,我需要将每个表格的数据简化为每小时一条记录,并比较两者每小时都有一条记录。

我的SQL知识不是那宽广,所以我甚至不知道这是可能的。我已经尝试每小时计算物品并对数据进行分组,但尚未能成功使其工作。

这些表位于Microsoft SQLExpress 2008数据库中。表格本身很长。

算表: 日期时间Product_No SEQ日期代码Internal_DateCode & ProductNo PRODUCT_DESCRIPTION口径加权1加权Weight3重80磅WeightXR LSL_WT TAR_WT USL_WT LABEL MAV

11年8月3日○点37分54秒23 1234567日期代码Internal_DateCode & ProductNo产品说明L-1A 50 1575 1566 1569.5 1575.5 1573.4 1550.809 1574.623 1598.437 1564.623 1525.507 L-1A_50

DOWNTIME表:

LINE_NAME MACHINE_NAME t_stamp移详细秒持续时间中 R2切换11年9月3日22时17分53 R2填料11年9月3日23:10 17

感兴趣的机器是“填料”,持续时间以分钟为单位的时间量机器停机。

的目标是:找出哪些时间他们没有哪个时间的运营商采取了权重和。找出机器停机的时间以及它们在哪个小时处于活动状态。比较操作员未加权的时间和机器处于活动状态的时间,并确定机器是否在运行,但是应该存在没有操作员权重的记录。

+0

您是否对'每小时每小时(分析严格按小时分组,不管实际分钟)“还是'每小时一次或多或少一次'感兴趣(其中分析着眼于分离在条目之间,加或减一些错误)。此外,你的RDBMS是什么,因为答案可能取决于实现。 –

回答

1

假设: 1)如果日期和时间是实际日期和时间格式,这将是不同的。但不知道,我会猜测他们是字符串(否则,为什么让他们两列?)所以我会猜测他们分别是YYYY-MM-DD和HH:MI。

2)这似乎是合理的OP想知道这些事实或者通过SHIFT或按产品或什么的。看到他们什么时候完成任何事情的时候,这似乎很奇怪。我会猜测它是由ProductNo产生的。

3)这可以在代码来完成,但是我的例子是比较容易,如果我在它创建一个小时的表:

create table hours (hr varchar(2)); 
insert into hours ('01'); 
insert into hours ('02'); 
insert into hours ('03'); 
insert into hours ('04'); 
etc. 

4)的任务在某种程度上时基 - 也就是报告是在某个特定的时间段。在我的例子中,我将选择9月份。

任务1:找出操作员在哪些小时中加权并且哪些小时不加。

select h.hr, o.productno, count(*) as nbr 
from hours h 
    left outer join operator o 
    on h.hr = substr (o.time, 1, 2) 
where o.date between '2011-09-01' and '2011-09-30' 
group by h.hr, o.productno 

这应该显示小时数列表,如果进行了测量,那些测量值在该小时内对该productno进行的次数。如果没有进行测量,由于外部连接,productno将是空白的,我猜测这是OP忘记的内容。

任务2:找出机器停机的时间以及它们在哪个小时处于活动状态。

我不想继续,除非OP给出我的假设的一些线索。事实上,我完全有可能浪费我的时间。

任务3 & 4:比较倍,运营商没有采取符合时代的权重,机器仍在工作,确定机都运行但目前还没有运营商记录的权重时,应该有。

我不想继续,除非OP给出我的假设的一些线索。事实上,我完全有可能浪费我的时间。

+0

谢谢你的帮助。我添加了一些示例数据来查看。最终我们并不关心诸如假设1的产品否,但是转变可能更有用。由于重量是在填充物处取得的,所关注的机器是“填充物”机器。但是,“转换”也会影响Filler,因此这些是需要查看的Downtime表中的两台机器。再次感谢您的帮助。 –