mysql行转列

 SELECT user_id userId,update_date datatime,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_XY1' THEN num ELSE 0 END ) xueyang,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_XY' THEN num ELSE 0 END ) xueya,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_XT' THEN num ELSE 0 END ) xuetang,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_XL' THEN num ELSE 0 END ) xinlv,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_TZ1' THEN num ELSE 0 END ) tizhi,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_TZ' THEN num ELSE 0 END ) tizhong,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_TW' THEN num ELSE 0 END ) tiwen,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_HXPL' THEN num ELSE 0 END ) huxipinlv,
        MAX(CASE dictionary_code WHEN 'LRTZ_JKZB_DGC' THEN num ELSE 0 END ) danguchun
    FROM (
         SELECT a1.user_id,update_date,dictionary_code,num FROM(
            SELECT user_id,dictionary_code,COUNT(index_name)num FROM user_health_data
           
            1=1 and user_id IN #{item}
           

            GROUP BY user_id,dictionary_code
         )AS a1 LEFT JOIN(
              SELECT user_id,MAX(update_date)update_date FROM user_health_data
       
        1=1 and user_id IN #{item}
       

             GROUP BY user_id
         )AS a2 ON a1.user_id = a2.user_id
     )AS b
     GROUP BY b.user_id,update_date
     ORDER BY update_date DESC
         LIMIT #{start},#{end}

dictionary_code          num         -------->           LRTZ_JKZB_XY1      LRTZ_JKZB_TZ1

LRTZ_JKZB_XY1         2                                          2                                3

LRTZ_JKZB_TZ1          3   

 

你可能感兴趣的:(sql)