我有一个很长的查询,它从各种来源收集数据,以创建一个关于正在检查的作业的报告。
只是添加一些上下文: 我有一份“工作”表。这些工作中的每一个都与某个区域和位置相关联,并根据工作的难度给出复杂性等级。每个工作由主管检查,得分为10,然后进入系统。根据它实现的分数,给出复杂度等级和再次检查的间隔。即较低的分数意味着检查的次数高于分数。
我正在编写一个查询,按ID,名称等收集每个作业,然后在最后一次检查时,下次检查它以及当前得分时,将其输入到检查工作的系统和实际主管。
不幸的是,我的查询并没有给我最近的值,而是最近的值。除了“Last_Checked”字段(见下文)。为此,MAX()函数正在工作;但是对于其他领域,这是不相关的。
以下是表格和查询的细分:
表1:工作
Job_ID | Job_Name | Job_Area | Job_Location | Job_Complexity
1 MyJob 1 1 2
2 AnothJob 1 2 1
表2:区域
Area_ID | Area_Name
1 Area
表3:地点
Location_ID | Location_Area | Location_Name
1 1 MyLocation1
2 1 MyLocation2
表4:复杂性
Complexity_ID | Complexity_Label | Complexity_Interval_Days
1 Very Difficult 25
2 Difficult 35
表5:用户
User_ID | User_FirstName | User_LastName
1 Jane Doe
表6:主管
Supervisor_ID | Supervisor_FirstName | Supervisor_LastName
1 John Doe
2 Barry Sheen
表7:检查
Check_ID | Check_Job_ID | Check_Date | Check_Score | Check_User | Check_Supervisor
1 1 27-03-17 8 1 1
2 1 28-03-17 5 1 2
3 1 29-03-17 6 1 2
当前查询
SELECT
j.Job_ID,
a.Area_Name,
d.Location_Name,
j.Job_Name,
MAX(c.Checked_Date) as Last_Checked,
Date_Add(MAX(c.Checked_Date), interval r.Complexity_TimePeriod day) as Due_Date,
Datediff(Date_Add(MAX(c.Checked_Date), interval r.Complexity_TimePeriod day), Now()) as Due_Days,
c.Check_Score as Current_Score,
CONCAT(u.User_FirstName, ' ', u.User_LastName) as Entered_By,
CONCAT(s.Supervisor_FirstName, ' ', s.Supervisor_LastName) as Supervisor,
r.Complexity_Level
from Jobs_active j
left join pdc_admin.admin_areas a
on a.Area_ID = j.Job_area
left join pdc_admin.admin_Locations l
on l.Location_ID = j.Job_Location
left join Jobs_Checks c
on c.Check_Job_ID = j.Job_ID
left join pdc_admin.admin_users u
on u.user_id = c.Check_Person
left join Jobs_Complexity_config r
on r.Complexity_ID = j.Job_Complexity
left join admin_Supervisors s on
s.Supervisor_ID = c.Check_Supervisor
group by j.Job_ID
我想从中得到的结论是这样的:
Job_ID | Area_Name | Location_Name | Job_Name | Last_Checked | Due_Date | Due_Days | Current_Score | Entered_By | Supervisor | Complexity_Level
1 Area | MyLocation1 MyJob 29-03-17 03-05-17 35 6 Jane Doe Barry Sheen Difficult
如您所见,结果显示最新字段(即已检查的分数/主管),但每个作业不显示超过1行。从本质上讲,我是关于每项工作的最新信息,而不会显示之前检查过的任何内容。
信息超载...感谢所有帮助!谢谢!