`

oracle 10g+ 行列转换

 
阅读更多
WITH t AS(
  SELECT 1 AS sno, 1 AS cno, 5 AS grade
    FROM dual
  UNION ALL
  SELECT 1, 2, 6
    FROM dual
  UNION ALL
  SELECT 1, 3, 10
    FROM dual
  UNION ALL
  SELECT 2, 3, 10
    FROM dual
  UNION ALL
  SELECT 2, 2, 10
    FROM dual
  UNION ALL
  SELECT 3, 1, 9
    FROM dual
  UNION ALL
  SELECT 3, 2, 9
    FROM dual)
  SELECT a.sno, Max(a.aa)
    FROM (SELECT sno,
                 wm_concat(cno || ',' || grade) over(partition BY sno order by cno, grade) AS aa
            FROM t) a
   GROUP BY a.sno;

 

运行一下就知道是啥意思了

 

分享到:
评论
1 楼 dhyang909 2012-09-07  

相关推荐

Global site tag (gtag.js) - Google Analytics