id name1 name2 course num
1 A B EN 1
1 A B MA 2
1 A B TE 3
1 A C AE 1
1 A C AC 2
2 D F PE 1
2 D F PC 2
....
TEST表数据如上所示,我使用分析函数得到以下结果:
select * from(
select id ,name1,name2,course,row_number()over(partition by id ,name1,name2 order by num)rn from test);
id name1 name2 course rn
1 A B EN 1
1 A B MA 2
1 A B TE 3
1 A C AE 1
1 A C AC 2
2 D F PE 1
2 D F PC 2
问题是怎么以rn作为分组条件,来将数据一组一组取出。
比如rn1,2,3是一组的,1,2又是一组,1,2又是一组的,以此类推。
1 A B EN 1
1 A B MA 2
1 A B TE 3
1 A C AE 1
1 A C AC 2
2 D F PE 1
2 D F PC 2
....
TEST表数据如上所示,我使用分析函数得到以下结果:
select * from(
select id ,name1,name2,course,row_number()over(partition by id ,name1,name2 order by num)rn from test);
id name1 name2 course rn
1 A B EN 1
1 A B MA 2
1 A B TE 3
1 A C AE 1
1 A C AC 2
2 D F PE 1
2 D F PC 2
问题是怎么以rn作为分组条件,来将数据一组一组取出。
比如rn1,2,3是一组的,1,2又是一组,1,2又是一组的,以此类推。
select * from(
select id ,name1,name2,course,rank()over(order by id ,name1,name2 ) rn from test);
row_number() over() rn1 from test)
select id ,name1,name2,course,wm_concat(course) YY from aa group by id ,name1,name2,course,rn1-rn;即按 id ,name1,name2,course,rn2 分组就可满足你的要求了