我有两个表用户和工作。工作表有多个用户的工作经验。我必须根据开始日期检索最近的两家公司。
条件:
1.如果工作表有多个用户的Id记录,则检索最近的2条记录并以单行显示(例如User_id = 1)
2.如果工作表有单个记录,则最近的公司记录和第二个记录应为“NULL”(例如user_id = 3)。
user
user_id First_name Last_name
1 AAA BBB
2 PPP QQQ
3 SSS RRR
work
user_id recent_company position start_year end_year
1 ABC CCC 2014 2015
1 PQR DDD 2013 2014
1 MNO EEE 2012 2013
1 MNO EEE 0000 0000
2 XYZ TTT 2008 2009
2 IJK MMM 2005 2008
3 QRS ZZZ 2001 2002
我已经尝试过最近的公司记录1:
select u.user_id,u.first_name,u.last_name,uw.recent_company1,uw.position1,uw.start_year,uw.end_year from muser u
left join
(SELECT user_id,recent_company,position,MAX(start_year) as start_year,end_year
FROM work
group by user_id
order by user_id) uw ON u.user_id =uw.user_id
我在开始年度查询最近的第一家公司的结果:
user_id First_name Last_name recent_company1
1 AAA BBB ABC
2 PPP QQQ XYZ
3 SSS RRR QRS
position1 start_year1 end_year1
CCC 2014 2015
TTT 2008 2009
ZZZ 2001 2002
start_year基础上第一和第二家公司的必需输出:
user_id First_name Last_name recent_company1 position1
1 AAA BBB ABC CCC
2 PPP QQQ XYZ TTT
3 SSS RRR QRS ZZZ
start_year1 end_year1
2014 2015
2008 2009
2001 2002
recent_company2 position2 start_year2 end_year2
PQR DDD 2013 2014
IJK MMM 2005 2008
NULL NULL NULL NULL