Sql 日期范围重叠的查询
我创建了一个报告,其中用户选择了一个ID。在该ID下有一个截止期,在该ID内,它被分割为一个或多个记录,这些记录也有日期范围。 例如: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: 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。