关键字 row_number() over (partition by)
例如,下面的数据, 这是按照name分组后,展示property值。

我们想得到这样的值;

第一步:将每一组的property标上序号
select name,property,row_number() over (partition by name order by property desc) column_num from test
得到的结果:

partition by 后面接的就应该是将要分组的字段。如果partition by property 相当于按照property分组,那么后面的列序号column_num就是1,1,1,1,1,1,1
	select  
				b.MineID,
				b.MineName,b.economy,b.address,
				MAX(CASE WHEN num = 1 THEN name END) AS value1,
				MAX(CASE WHEN num = 1 THEN jobType END) AS jobType1,
				MAX(CASE WHEN num = 1 THEN mobile END) AS phone1,
				MAX(CASE WHEN num = 2 THEN name END) AS value2,
					MAX(CASE WHEN num = 2 THEN jobType END) AS jobType2,
					MAX(CASE WHEN num = 2 THEN mobile END) AS phone2,
				MAX(CASE WHEN num = 3 THEN name END) AS value3,
					MAX(CASE WHEN num = 3 THEN jobType END) AS jobType3,
					MAX(CASE WHEN num = 3 THEN mobile END) AS phone3,
				MAX(CASE WHEN num = 4 THEN name END) AS value4,
					MAX(CASE WHEN num = 4 THEN jobType END) AS jobType4,
					MAX(CASE WHEN num = 4 THEN mobile END) AS phone4,
				MAX(CASE WHEN num = 5 THEN name END) AS value5,
					MAX(CASE WHEN num = 5 THEN jobType END) AS jobType5,
					MAX(CASE WHEN num = 5 THEN mobile END) AS phone5,
						MAX(CASE WHEN num = 6 THEN name END) AS value6,
					MAX(CASE WHEN num = 6 THEN jobType END) AS jobType6,
					MAX(CASE WHEN num = 6 THEN mobile END) AS phone6,
						MAX(CASE WHEN num = 7 THEN name END) AS value7,
					MAX(CASE WHEN num = 7 THEN jobType END) AS jobType7,
					MAX(CASE WHEN num = 7 THEN mobile END) AS phone7,
						MAX(CASE WHEN num = 8 THEN name END) AS value8,
					MAX(CASE WHEN num = 8 THEN jobType END) AS jobType8,
					MAX(CASE WHEN num = 8 THEN mobile END) AS phone8,
						MAX(CASE WHEN num = 9 THEN name END) AS value9,
					MAX(CASE WHEN num = 9 THEN jobType END) AS jobType9,
					MAX(CASE WHEN num = 9 THEN mobile END) AS phone9,
						MAX(CASE WHEN num = 10 THEN name END) AS value10,
					MAX(CASE WHEN num = 10 THEN jobType END) AS jobType10,
					MAX(CASE WHEN num = 10 THEN mobile END) AS phone10
					
				from 
				(select a.*,row_number() over (partition by a.MineName order by a.job_id asc) num from   (select
              m.MineID,m.MineName,dic.LABEL economy,t.ADDRESS address,a.job_id, person_name name,mobile,if (a.job_id is null,a.job,b.dic_name) jobType
        from m_mine_keeper_info a
        LEFT JOIN k_dictionary b on b.dic_code=a.job_id and b.dic_type='JobType'	
				left join k_mine m on m.MineID=a.MineId
				left join t_aj1_mj_jcxx_baseinfo t on t.CORP_ID=m.MineID and t.DEL_FLAG=0
				left join jcxx_sys_dict dic on dic.`VALUE`=t.ECONOMY_TYPE and dic.TYPE='base_economy_type'
        where  ( a.is_deleted=0 or a.is_deleted is null ) and a.job_id is not null 
			) a) b group by MineName

















