日期:2014-05-16  浏览次数:20585 次

Oracle 行列转换积累

行列转换包括以下六种情况:
*列转行
*行转列
*多列转换成字符串
*多行转换成字符串
*字符串转换成多列
*字符串转换成多行

下面分别进行举例介绍。

首先声明一点,有些例子需要如下10g及以后才有的知识:
a。掌握model子句,
b。正则表达式
c。加强的层次查询

讨论的适用范围只包括8i,9i,10g及以后版本。begin:

1、列转行

Sql代码 复制代码
  1. CREATE?TABLE?t_col_row( ??
  2. ID?INT, ??
  3. c1?VARCHAR2(10), ??
  4. c2?VARCHAR2(10), ??
  5. c3?VARCHAR2(10)); ??
  6. ??
  7. INSERT?INTO?t_col_row?VALUES?(1,?'v11',?'v21',?'v31'); ??
  8. INSERT?INTO?t_col_row?VALUES?(2,?'v12',?'v22',?NULL); ??
  9. INSERT?INTO?t_col_row?VALUES?(3,?'v13',?NULL,?'v33'); ??
  10. INSERT?INTO?t_col_row?VALUES?(4,?NULL,?'v24',?'v34'); ??
  11. INSERT?INTO?t_col_row?VALUES?(5,?'v15',?NULL,?NULL