存在以下表
id year month1 month2 month3
01 2013 23 24 25
02 2013 22 23 24转为以下表
id year month
01 2013 23
01 2013 24
01 2013 25
02 2013 22
02 2013 23
02 2013 24求方法列转为多行
id year month1 month2 month3
01 2013 23 24 25
02 2013 22 23 24转为以下表
id year month
01 2013 23
01 2013 24
01 2013 25
02 2013 22
02 2013 23
02 2013 24求方法列转为多行
解决方案 »
- oracle报错ORA-01000: maximum open cursors exceeded
- 大家oracle 中表,和字段的单词直接都是用下划线间隔么?
- asp.net 2.0连接oracle10g的问题
- 求一条sql语句
- 求一个sql语句
- 异常详细信息: System.Data.OleDb.OleDbException: 未找到 Oracle 客户端和网络组件。这些组件是由 Oracle 公司提供的,是 Oracle 8i 版 (或更高) 客户软件安装的一部分。
- 一道笔试题求解
- 在触发器中如何判断某一次update只改变了某一个字段
- 如何给一个表按日期进行分区
- ROWID的问题!!
- ORACLE 存储过程 游标嵌套优化,请帮忙指点!()
- 为什么运行ORACLE 10G FORM,运行页面时空白
SELECT * FROM 表 UNPIVOT(
MONTH1 FOR MON IN (MONTH1, MONTH2, MONTH3)
)
)
顺便说一句,不建议使用oracle的关键字/保留字做字段名、对象名.
我用的9I
行转列 使用 case when +聚合
列转行 使用 递归 level 或者connect by prior 构造伪列
SELECT ID, YEAR, MONTH1 AS MONTH FROM TABLE
union all
SELECT ID, YEAR, MONTH2 AS MONTH FROM TABLE
union all
...
这个没用过
不过3楼那个 也可以实现 不过字段多的情况下 UNION ALL 就不好用了