工厂转移报告
Posted
技术标签:
【中文标题】工厂转移报告【英文标题】:Plant Shift Report 【发布时间】:2011-09-10 14:07:03 【问题描述】:我正在生成:
在我的应用程序中,我提供了一个用于选择班次和工厂的下拉列表,他们将从日历中选择一个日期
我有 3 个班次
shift1 早上 7 点开始,下午 3 点结束 shift2 下午 3 点开始,晚上 11 点结束 shift3 晚上 11 点开始,凌晨 3 点结束我有一个名为 datalogging 的表,其中将存储登录信息,如下所示:
Name Shiftname operatorname Date plantname line Machine
Pradeepa Shift2(11-7) Operator 3 2011-05-28 Plant 3 Line5 mc10
Ashwini Shift1(7-3) Operator 1 2011-05-29 Plant 3 Line6 mc12
Deepika Shift2(11-7) Operator 3 2011-05-29 Plant 5 Line9 mc18
Ashwini Shift1(7-3) Operator 1 2011-05-24 Plant 1 Line1 mc1
Deepika Shift2(3-11) Operator 2 2011-05-24 Plant 2 Line3 mc5
Ashwini Shift2(3-11) Operator 2 2011-05-25 Plant 2 Line3 mc5
等等..
我有一个参数表,如温度、压力、ph、速度、co2 等
温度表包含以下数据,该表将包含从早上 7 点到凌晨 3 点的所有读数
这是温度表读数
Temperature Time Date
27 1900-01-01 13:46:37.000 2011-06-07 00:00:00
27.3 1900-01-01 13:51:37.000 2011-06-07 00:00:00
27.6 1900-01-01 13:56:37.000 2011-06-07 00:00:00
27.9 1900-01-01 14:01:37.000 2011-06-07 00:00:00
28.2 1900-01-01 14:06:37.000 2011-06-07 00:00:00
28.5 1900-01-01 14:11:37.000 2011-06-07 00:00:00
28.8 1900-01-01 14:16:37.000 2011-06-07 00:00:00
27 1900-01-01 15:09:52.000 2011-06-07 00:00:00
27.3 1900-01-01 15:11:52.000 2011-06-07 00:00:00
27.6 1900-01-01 15:13:53.000 2011-06-07 00:00:00
27.9 1900-01-01 15:15:52.000 2011-06-07 00:00:00
28.2 1900-01-01 15:17:52.000 2011-06-07 00:00:00
28.5 1900-01-01 15:19:52.000 2011-06-07 00:00:00
28.8 1900-01-01 15:21:52.000 2011-06-07 00:00:00
29.1 1900-01-01 15:23:52.000 2011-06-07 00:00:00
29.4 1900-01-01 15:25:52.000 2011-06-07 00:00:00
29.7 1900-01-01 15:27:52.000 2011-06-07 00:00:00
30 1900-01-01 15:29:52.000 2011-06-07 00:00:00
30.3 1900-01-01 07:03:10.000 2011-06-07 00:00:00
30.6 1900-01-01 07:05:11.000 2011-06-07 00:00:00
30.9 1900-01-01 07:07:10.000 2011-06-07 00:00:00
31.2 1900-01-01 07:09:10.000 2011-06-07 00:00:00
31.5 1900-01-01 07:11:10.000 2011-06-07 00:00:00
31.8 1900-01-01 07:13:11.000 2011-06-07 00:00:00
31.8 1900-01-01 07:15:11.000 2011-06-07 00:00:00
32.1 1900-01-01 07:17:10.000 2011-06-07 00:00:00
32.4 1900-01-01 07:19:10.000 2011-06-07 00:00:00
32.7 1900-01-01 07:21:10.000 2011-06-07 00:00:00
33 1900-01-01 07:23:11.000 2011-06-07 00:00:00
27 1900-01-01 09:03:10.000 2011-06-07 00:00:00
27.3 1900-01-01 09:05:09.000 2011-06-07 00:00:00
27.6 1900-01-01 09:07:09.000 2011-06-07 00:00:00
27.9 1900-01-01 09:09:09.000 2011-06-07 00:00:00
28.2 1900-01-01 09:11:09.000 2011-06-07 00:00:00
28.5 1900-01-01 09:13:09.000 2011-06-07 00:00:00
28.8 1900-01-01 09:15:09.000 2011-06-07 00:00:00
29.1 1900-01-01 09:17:09.000 2011-06-07 00:00:00
29.4 1900-01-01 09:19:10.000 2011-06-07 00:00:00
29.4 1900-01-01 09:21:09.000 2011-06-07 00:00:00
29.7 1900-01-01 09:23:09.000 2011-06-07 00:00:00
30 1900-01-01 09:25:09.000 2011-06-07 00:00:00
30.3 1900-01-01 09:27:09.000 2011-06-07 00:00:00
27 1900-01-01 10:33:10.000 2011-06-07 00:00:00
27.3 1900-01-01 10:35:10.000 2011-06-07 00:00:00
27.6 1900-01-01 10:37:10.000 2011-06-07 00:00:00
27.9 1900-01-01 10:39:10.000 2011-06-07 00:00:00
28.2 1900-01-01 10:41:10.000 2011-06-07 00:00:00
这是我的压力读数
Pressure Time Date
0.5 1900-01-01 13:46:36.000 2011-06-07 00:00:00
0.9 1900-01-01 13:51:36.000 2011-06-07 00:00:00
1.3 1900-01-01 13:56:36.000 2011-06-07 00:00:00
1.7 1900-01-01 14:01:36.000 2011-06-07 00:00:00
2.1 1900-01-01 14:06:36.000 2011-06-07 00:00:00
2.5 1900-01-01 14:11:36.000 2011-06-07 00:00:00
2.9 1900-01-01 14:16:36.000 2011-06-07 00:00:00
0.5 1900-01-01 15:09:52.000 2011-06-07 00:00:00
0.9 1900-01-01 15:11:51.000 2011-06-07 00:00:00
1.3 1900-01-01 15:13:52.000 2011-06-07 00:00:00
1.7 1900-01-01 15:15:52.000 2011-06-07 00:00:00
2.1 1900-01-01 15:17:51.000 2011-06-07 00:00:00
2.5 1900-01-01 15:19:51.000 2011-06-07 00:00:00
2.9 1900-01-01 15:21:51.000 2011-06-07 00:00:00
3.3 1900-01-01 15:23:51.000 2011-06-07 00:00:00
3.7 1900-01-01 15:25:51.000 2011-06-07 00:00:00
4.1 1900-01-01 15:27:51.000 2011-06-07 00:00:00
4.5 1900-01-01 15:29:51.000 2011-06-07 00:00:00
4.9 1900-01-01 07:03:09.000 2011-06-07 00:00:00
5.3 1900-01-01 07:05:09.000 2011-06-07 00:00:00
5.7 1900-01-01 07:07:09.000 2011-06-07 00:00:00
6.1 1900-01-01 07:09:09.000 2011-06-07 00:00:00
6.5 1900-01-01 07:11:09.000 2011-06-07 00:00:00
6.9 1900-01-01 07:13:09.000 2011-06-07 00:00:00
6.9 1900-01-01 07:15:09.000 2011-06-07 00:00:00
7.3 1900-01-01 07:17:09.000 2011-06-07 00:00:00
7.7 1900-01-01 07:19:09.000 2011-06-07 00:00:00
8.1 1900-01-01 07:21:09.000 2011-06-07 00:00:00
8.5 1900-01-01 07:23:09.000 2011-06-07 00:00:00
0.5 1900-01-01 09:03:09.000 2011-06-07 00:00:00
0.9 1900-01-01 09:05:09.000 2011-06-07 00:00:00
1.3 1900-01-01 09:07:09.000 2011-06-07 00:00:00
1.7 1900-01-01 09:09:09.000 2011-06-07 00:00:00
2.1 1900-01-01 09:11:09.000 2011-06-07 00:00:00
2.5 1900-01-01 09:13:09.000 2011-06-07 00:00:00
2.9 1900-01-01 09:15:09.000 2011-06-07 00:00:00
3.3 1900-01-01 09:17:09.000 2011-06-07 00:00:00
3.3 1900-01-01 09:19:09.000 2011-06-07 00:00:00
3.7 1900-01-01 09:21:09.000 2011-06-07 00:00:00
4.1 1900-01-01 09:23:09.000 2011-06-07 00:00:00
4.5 1900-01-01 09:25:09.000 2011-06-07 00:00:00
4.9 1900-01-01 09:27:09.000 2011-06-07 00:00:00
0.5 1900-01-01 10:33:10.000 2011-06-07 00:00:00
0.9 1900-01-01 10:35:10.000 2011-06-07 00:00:00
1.3 1900-01-01 10:37:10.000 2011-06-07 00:00:00
1.7 1900-01-01 10:39:10.000 2011-06-07 00:00:00
2.1 1900-01-01 10:41:10.000 2011-06-07 00:00:00
2.5 1900-01-01 17:02:57.000 2011-06-07 00:00:00
2.9 1900-01-01 17:04:57.000 2011-06-07 00:00:00
3.3 1900-01-01 17:06:57.000 2011-06-07 00:00:00
3.7 1900-01-01 17:08:57.000 2011-06-07 00:00:00
4.1 1900-01-01 17:10:57.000 2011-06-07 00:00:00
4.5 1900-01-01 17:12:57.000 2011-06-07 00:00:00
4.9 1900-01-01 17:14:57.000 2011-06-07 00:00:00
等等..
用户将从下拉列表和班次中选择一行,他将从日历中选择一个日期如果用户选择班次 1,工厂 1 和日期 07/06/2011 应该显示上午 7 点到下午 3 点之间的读数在我的报告中
我的报告应如下所示:
Machine Shiftname Date Time Temperature Pressure
mc1 Shift1 2011/06/07 07:03:10.000 30.3 4.9
mc1 Shift1 2011/06/07 07:05:11.000 30.6 5.3
mc1 Shift1 2011/06/07 07:07:10.000 30.9 5.7
像这样,我想要从晚上 7 点到下午 3 点从桌子上读取温度、压力、ph、co2、d02 的所有读数
谁能帮我解决这个问题。
【问题讨论】:
它抛出错误,因为无法绑定多部分标识符“P.Time”。 【参考方案1】:Select
DL.Machine,
DL.ShiftName,
@MyDate,
case when T.Time is null then P.Time else T.Time end as Time,
T.Temperature,
NULL as Pressure
From
DataLogging as DL
inner join Temperature as T on "reading time is within this shift's timespan"
Where
DL.Date = @MyDate
and DL.ShiftName = @MyShiftName
UNION
Select
DL.Machine,
DL.ShiftName,
@MyDate,
case when T.Time is null then P.Time else T.Time end as Time,
NULL as Temperature,
P.Pressure
From
DataLogging as DL
inner join Pressure as P on "reading time is within this shift's timespan"
Where
DL.Date = @MyDate
and DL.ShiftName = @MyShiftName
让我在这里解释一下方法...
从数据记录开始。您关心有特定轮班的员工。您可以通过指定输入 DATE 和输入 SHIFT 在 WHERE
子句中定义该员工。
加入Temperature
表,因为您想查看该人轮班的所有温度读数。
加入Pressure
表,因为您想查看该人轮班的所有压力读数。
我们为什么要UNION
?好吧,主要是为了防止欺骗(如果我们在同一个 Select 语句中加入两个读数表,就会存在欺骗)。正如您所注意到的,很难将温度读数和压力读数结合起来,因为它们具有不同的时间戳。如果他们相隔一秒钟,那么就没有什么可以加入的了。因此,我认为最好的解决方案是像我上面所做的那样简单地记录每次阅读。以上将首先列出所有温度读数,然后是所有压力读数 - 并将它们组合到通过 UNION
返回的同一个表中。
注意:您可能应该使用datetime
字段而不是Date
列和时间列,因为它将日期和时间都存储在一个字段中。
注意:您可以通过使用子查询和grouping 时间上的subquery 来组合具有相同日期和时间的读数。
注意:"reading time is within this shift's timespan"
包含在上面以指示您需要填写的一些代码。您可能希望使用case 语句来调整ON Clause
以仅包含这些项目有一个特定的转变
参考文献
Union【讨论】:
没有我单独存储日期和时间,我根据班次获取数据。以上是关于工厂转移报告的主要内容,如果未能解决你的问题,请参考以下文章
NOIP2009pj道路游戏[环形DP 转移优化 二维信息]
我的报告在 Eclipse 中正常工作,但使用 jar 文件抛出“没有为 'MongoDbQuery' 注册的查询执行器工厂”[重复]