table1
NO SNAME
1 张三
2 李四
table2
NO YEAR
1 2006年
1 2007年
2 2005年
2 2006年
结果用sql 语言 :
SNAME YEAR
张三 2006 年,2007年
李四 2005 年,2006年
SELECT SNAME,LTRIM(MAX(SYS_CONNECT_BY_PATH(YEAR,',')),',') AS YEAR
FROM (
SELECT NO,SNAME, YEAR,
ROW_NUMBER() OVER(PARTITION BY NO ORDER BY YEAR) as CURR,
ROW_NUMBER() OVER(PARTITION BY NO ORDER BY YEAR) - 1 as PREV
FROM (
SELECT A.NO, A.SNAME, B.YEAR
FROM table1 A INNER JOIN table2 B ON A.NO = B.NO
)
)
START WITH CURR = 1
CONNECT BY PREV = PRIOR CURR and NO = PRIOR NO
GROUP BY SNAME