月到日/周到日期和SQL中的Shift报表的Shift过滤器

时间:2015-12-15 09:02:23

标签: sql sql-server sql-server-2005

在我的界面中,我有两个过滤器:

Date - Today , Yesterday, WTD , MTD
Shift - 1st, 2nd, 3rd

班次时间如下:

1st: 06:00 - 14:00
2nd: 14:00 - 22:00
3rd: 22:00 - 06:00

我通过以下查询计算每种材料的生产质量:

SELECT 
       C.MATERIAL
      ,G.MACHINE
      ,F.PART   
      ,SUM(A.QT_CONFIRMED) QT_CONFIRMED

 FROM 
       CONFIRMATION A 

       INNER JOIN LOT_RECORD B ON A.LOT_RECORD_ID=B.LOT_RECORD_ID
       INNER JOIN LOT C ON B.LOT_RECORD_ID=C.LOT_RECORD_ID
       INNER JOIN MATERIAL D ON C.MATERIAL = D.MATERIAL
       INNER JOIN PART F ON C.PART=F.PART
       INNER JOIN MACHINE G ON F.MACHINE=G.MACHINE

WHERE
      A.DT_CONFIRMATION BETWEEN '[Param.1]' AND '[Param.2]'

GROUP BY
       C.MATERIAL
      ,G.MACHINE
      ,F.PART

ORDER BY 
       G.MACHINE ASC

今天/昨天,我可以获取日期和班次,并可以将相关参数传递给查询并获得正确的输出。

如果我选择昨天然后选择第二班,那就好了 Param.1 = 2015-12-14T14:00:00 Param.2 = 2015-12-14T22:00:00

但我面临的问题是WTD和MTD。如果我选择MTD和第一班,那么

My Start date will be 1st Dec. End Date will be 15th Dec.

现在我无法通过

Param.1 = 2015-12-01T06:00:00
Param.2 = 2015-12-15T14:00:00

因为它会计算所有班次的数量。我需要传递参数,使其仅在12月1日至12月15日的06:00至14:00之间计算数量。

我怎样才能实现这一目标?我真的很困惑和困惑。

由于

0 个答案:

没有答案