如何在单行中显示类似ID的多行记录?

时间:2015-01-24 10:35:09

标签: mysql aggregate-functions

我有两个表用户和工作。工作表有多个用户的工作经验。我必须根据开始日期检索最近的两家公司。

条件:

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

0 个答案:

没有答案