首先,我为模糊的问题标题道歉,我不知道该写些什么。请告诉我,我会更新。
现在在这里...... 我有3个
Table : target
Columns : target_id , target_employee_id, target_location_id, target_location_name, target_scheduled_on, target_exec_end_time, target_damaged, target_damaged_text
Table : employee
Columns : employee_id, employee_manager_id
Table : location
Columns : location_id, location_name
小解释 - >管理者角色是为员工创建目标,这意味着新目标将具有位置名称和计划安排。然后,员工将访问该位置并报告是否有任何损坏。对于同一位置,这可能会在一个月内多次发生。
我需要展示的内容 - >具有损害的目标列表 - 在两个日期之间(target_exec_end_time),如果该位置有多个记录,则显示具有最大日期的记录。
更多解释 - >可以有多个具有相同位置的目标条目,但我只需要显示一个实例。 target table image
我尽力解释。提前谢谢。
答案 0 :(得分:0)
这个怎么样:
select * from target join employee on target.target_employee_id = employee.employee_id
join location on target.target_location_name = location.location_name
where target_exec_end_time between <start_date> and <end_date>
and target_exec_end_time = (select max(target_exec_end_time) from location loc2
where loc2.location_name = target.location_name)
group by target.location_name;
不确定在哪里有target_exec_end_time
条款。也许你只想要最大值?
答案 1 :(得分:0)
select t.target_location_name,case when t.target_damaged >0
then t.target_damaged_text else 'Not Damaged' end target_damaged_text,
max(t.target_exec_end_time) from target t
inner join employee e on t.target_employee_id=e.employee_id
inner join location l on t.target_location_id=l.location_id
where t.target_exec_end_time between 'DATE1' and 'DATE2'
group by t.target_id,t.target_damaged_text
答案 2 :(得分:0)
SELECT MAX(target_exec_end_time), *
FROM target
WHERE target_damaged=1
AND target_exec_end_time BETWEEN '2012-12-01' AND '2012-12-31'
GROUP BY target_location_id