oracle字段合并方法


  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


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3