我有5张桌子: 员工,person_analys,标准,分配和薪酬
我想表明:
employee_id and full_name from employee,
date_from and date_to from person_analys,
segment1 and segment2 from criteria,
efective_end_date from assignment,
salary from pay
我想显示每个employee_id,并且只在1天内显示1行 并取最后一个日期(来自effective_end_date的最长日期)。 date_from和date_to描述为白天。
示例:
employee_id full_name date_from date_to segment1 segment2 effective_end_date salary
11111 aaa 01-Jan-17 01-Jan-17 11:00 17:00 02-Jan-17 1000
11111 aaa 01-Jan-17 01-Jan-17 11:00 17:00 01-Jan-17 2000
我希望每位员工每天只显示一行,每天根据最大有效结束日期显示如下:
employee_id full_name date_from date_to segment1 segment2 effective_end_date salary
11111 aaa 01-Jan-17 01-Jan-17 11:00 17:00 02-Jan-17 1000
请帮帮我。 我已经尝试了但where条件不起作用仍然显示所有数据。 谢谢你:))
答案 0 :(得分:1)
在FROM
with join_of_tables as (
select TO_DATE(effective_end_date as date, 'DD-MON-YY') as effective_end_date, ...
-- here you should have a join of your tables
)
select e.*
from join_of_tables e
join (
select employee_id, max(effective_end_date) max_effective_end_date
from join_of_tables
group by employee_id
) t on e.employee_id= t.employee_id and
e.effective_end_date = t.max_effective_end_date
如果effective_end_date
的数据类型为varchar2
,则应首先将其转换为日期(在我的示例中为TO_DATE
函数)。