Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 日期范围重叠的查询_Sql - Fatal编程技术网

Sql 日期范围重叠的查询

Sql 日期范围重叠的查询,sql,Sql,我创建了一个报告,其中用户选择了一个ID。在该ID下有一个截止期,在该ID内,它被分割为一个或多个记录,这些记录也有日期范围。 例如: ID: MMA1512 - 3/1-3/15 compose of -- > 'P2306.2012.15.03.A.STAFF' - 2/24-3/8 -- > 'P2306.2012.08.03.A.DAILY' - 3/1-3/15 Tables: Work

我创建了一个报告,其中用户选择了一个ID。在该ID下有一个截止期,在该ID内,它被分割为一个或多个记录,这些记录也有日期范围。 例如:

   ID: MMA1512 - 3/1-3/15
        compose of
            -- > 'P2306.2012.15.03.A.STAFF' - 2/24-3/8
            -- > 'P2306.2012.08.03.A.DAILY' - 3/1-3/15

  Tables:
     Work Allocation 
       id
   startdate

     Work Allocation Details
        workallocationid
        employee no
        costcode
        subcostcode
        hrswork
问题是3/1-3/8的数据有重叠,但我不能排除重叠日期,因为需要在“P2306.2012.08.03.A.DAILY”上进行。这是我的问题

输出错误

 SELECT wa.companycode,wa.sitecode,wa_details.employeeno,    
        wa_details.costcode,wa_details.subcostcode,  
   SUM(wa_details.hrswork) hrswork,ttl_work_hrs  
FROM WorkAllocation wa  
INNER JOIN WorkAllocation_details wa_details  ON wa.id = wa_details.workallocationid  
INNER JOIN              
(  SELECT employee_id,ttl_work_hrs FROM [dbo].[Get_Total_Work_Hours]  ('mma1512','P2306.2012.15.03.l.STAFF,P2306.2012.08.03.l.DAILY','p2306','l'))                
 view_ttl_hours 
 ON 
wa_details.employeeno=view_ttl_hours.employee_id  
 WHERE 
companycode='l'
 AND 
sitecode='p2306' 
 AND 
startdate BETWEEN '2012-02-24' AND '2012-03-15'
 GROUP BY wa.companycode,wa.sitecode,       wa_details.employeeno,wa_details.costcode,wa_details.subcostcode,ttl_work_hrs   

     Company Site   EmployeeNo CostCode SubCostCode HrsWork Total Hours Work
      LCPI   P2306  PH080323    8321    169        160.50   162.5
      LCPI   P2306  PH080323    10184   2648       14.50    162.5
SELECT wa.companycode,wa.sitecode,wa_details.employeeno,    
        wa_details.costcode,wa_details.subcostcode,  
   SUM(wa_details.hrswork) hrswork,ttl_work_hrs  
FROM WorkAllocation wa  
INNER JOIN WorkAllocation_details wa_details  ON wa.id = wa_details.workallocationid  
INNER JOIN              
(  SELECT employee_id,ttl_work_hrs FROM [dbo].[Get_Total_Work_Hours]  ('mma1512','P2306.2012.15.03.l.STAFF,P2306.2012.08.03.l.DAILY','p2306','l'))                
 view_ttl_hours 
 ON 
wa_details.employeeno=view_ttl_hours.employee_id  
 WHERE 
companycode='l'
 AND 
sitecode='p2306' 
 AND 
startdate BETWEEN '2012-02-24' AND '2012-03-08'
 GROUP BY wa.companycode,wa.sitecode,       wa_details.employeeno,wa_details.costcode,wa_details.subcostcode,ttl_work_hrs

   Company Site   EmployeeNo CostCode SubCostCode HrsWork Total Hours Work
      LCPI    P2306  PH080323   8321    169    148.00   162.5
      LCPI    P2306  PH080323   10184   2648       14.50    162.5
正确输出

 SELECT wa.companycode,wa.sitecode,wa_details.employeeno,    
        wa_details.costcode,wa_details.subcostcode,  
   SUM(wa_details.hrswork) hrswork,ttl_work_hrs  
FROM WorkAllocation wa  
INNER JOIN WorkAllocation_details wa_details  ON wa.id = wa_details.workallocationid  
INNER JOIN              
(  SELECT employee_id,ttl_work_hrs FROM [dbo].[Get_Total_Work_Hours]  ('mma1512','P2306.2012.15.03.l.STAFF,P2306.2012.08.03.l.DAILY','p2306','l'))                
 view_ttl_hours 
 ON 
wa_details.employeeno=view_ttl_hours.employee_id  
 WHERE 
companycode='l'
 AND 
sitecode='p2306' 
 AND 
startdate BETWEEN '2012-02-24' AND '2012-03-15'
 GROUP BY wa.companycode,wa.sitecode,       wa_details.employeeno,wa_details.costcode,wa_details.subcostcode,ttl_work_hrs   

     Company Site   EmployeeNo CostCode SubCostCode HrsWork Total Hours Work
      LCPI   P2306  PH080323    8321    169        160.50   162.5
      LCPI   P2306  PH080323    10184   2648       14.50    162.5
SELECT wa.companycode,wa.sitecode,wa_details.employeeno,    
        wa_details.costcode,wa_details.subcostcode,  
   SUM(wa_details.hrswork) hrswork,ttl_work_hrs  
FROM WorkAllocation wa  
INNER JOIN WorkAllocation_details wa_details  ON wa.id = wa_details.workallocationid  
INNER JOIN              
(  SELECT employee_id,ttl_work_hrs FROM [dbo].[Get_Total_Work_Hours]  ('mma1512','P2306.2012.15.03.l.STAFF,P2306.2012.08.03.l.DAILY','p2306','l'))                
 view_ttl_hours 
 ON 
wa_details.employeeno=view_ttl_hours.employee_id  
 WHERE 
companycode='l'
 AND 
sitecode='p2306' 
 AND 
startdate BETWEEN '2012-02-24' AND '2012-03-08'
 GROUP BY wa.companycode,wa.sitecode,       wa_details.employeeno,wa_details.costcode,wa_details.subcostcode,ttl_work_hrs

   Company Site   EmployeeNo CostCode SubCostCode HrsWork Total Hours Work
      LCPI    P2306  PH080323   8321    169    148.00   162.5
      LCPI    P2306  PH080323   10184   2648       14.50    162.5

查询之间的差异是'2012-02-24'和'2012-03-15'之间的开始日期。

所需的
错误的
输出之间的唯一区别是
HrsWork
,但您没有发布计算它的代码([dbo].[Get\u Total\u Work\u Hours])。你也提到了重叠的日期,但我们看不到。请发布我们可以使用的样本数据。是的,差异只是HrsWork的值,因为在错误的输出中,它包含重叠日期。我将发布样本数据。@NikolaMarkovinović我已经编辑了我的帖子。我希望你现在能理解。谢谢为什么要复制查询?对我来说似乎完全一样。另一方面,我要求输入Get_total_work_hours的数据和代码,因为我不能相信162.5实际上是正确的。也许HrsWork显示的数字正确,总数应该是175?无论如何,请从
工作分配_details
@NikolaMarkovinović发布该员工的记录。我想告诉您问题出在日期范围上。ID MMA1512下面有两个日期范围。请阅读我的上述描述。总工作时间是正确的,唯一的问题是HrsWork。