【发布时间】:2015-01-24 10:35:08
【问题描述】:
我有两个表用户和工作。工作表有多个用户的工作经验。我必须根据开始日期检索最近的 2 家公司。
条件:
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
【问题讨论】:
-
是否有可能迭代结果?