行班报告,行日报告

时间:2011-05-31 06:33:50

标签: c# sql sql-server sql-server-2005 report

我正在生成一个换班报告:

在我的申请中,我提供了一个用于选择班次和行的下拉列表,他们将从日历中选择日期

我有3班

  • shift1从早上7点开始,到下午3点结束
  • shift2从下午3点开始,到晚上11点结束
  • shift3从晚上11点开始,到凌晨3点结束

我有一个名为datalogging的表,其中将存储登录信息,如下所示:

Name       Shiftname       ID          operatorname   Date           plantname    line     Machine
Pradeepa  Shift2(11-7)     3           Operator 3     2011-05-28     Plant 3      Line5    mc10
Ashwini   Shift1(7-3)      1           Operator 1     2011-05-29     Plant 3      Line6    mc12
Deepika   Shift2(11-7)     2           Operator 3     2011-05-29     Plant 5      Line9    mc18
Ashwini   Shift1(7-3)      1           Operator 1     2011-05-24     Plant 1      Line1    mc1
Deepika   Shift2(3-11)     2           Operator 2     2011-05-24     Plant 2      Line3    mc5
Ashwini   Shift2(3-11)     1           Operator 2     2011-05-25     Plant 2      Line3    mc5

依旧......

我有一个参数表,如温度,压力,pH值,速度,二氧化碳等

Temperature表包含以下数据,此表将包含从早上7点到凌晨3点的所有读数

Temperature      Time              Date
27               13:13:54.000      2011-05-25
27.3             13:14:04.000      2011-05-25 
27.6             13:14:14.000      2011-05-25 
27.9             13:14:24.000      2011-05-25
28.2             13:14:34.000      2011-05-25 
28.5             13:14:44.000      2011-05-25 
27               16:13:29.000      2011-05-26 
27               16:13:31.000      2011-05-26 

依旧......

用户将从下拉列表中选择一行并切换,他将从日历中选择日期 如果用户选择shift2,line3和date 25/05/2011,我的报告中应显示下午3点到11点之间的读数是什么

我的报告应如下所示:

Machine     Shiftname   Date               Time             Temperature
mc5         Shift2      25/05/2011         13:13:54.000     27
mc5         Shift2      25/05/2011         13:14:04.000     27.3
mc5         Shift2      25/05/2011         13:14:14.000     27.6

我也在做行天报告

其中shiftname应根据时间更改,例如,如果时间更改为23:00:00 shiftname应在我的报告中更改为shift3

如果用户选择特定的班次和日期,例如,如果用户选择shift1,line1和date,我的报告应包含所有读数,从上午7点到下午3点

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:2)

您可以通过以下查询获取报告

SELECT d.Machine
       , CASE WHEN t.time BETWEEN '19:00:00.000' AND '23:59:59.999' THEN 'Shift1'
              WHEN t.time BETWEEN '00:00:00.000' AND '02:59:59.999' THEN 'Shift1'
              WHEN t.time BETWEEN '03:00:00.000' AND '10:59:59.999' THEN 'Shift2'
              WHEN t.time BETWEEN '11:00:00.000' AND '18:59:59.999' THEN 'Shift3'
          END
       , t.Date
       , t.Time
       , t.Temperature
FROM   Datalogging d
       INNER JOIN Temperature t ON t.Date = d.Date
WHERE  d.Shifname = 'Shift2(3-11)'
       AND d.Line = 'Line3'
       AND t.Date = '25/05/2011'

但如果我们可以假设每台机器每天都有温度读数,很明显您的TemperatureDatalogging表之间缺少关系。