如何用sql把表tt:itemno, zhi
a , x1
a, x2
a, x3
b, x1
b, x4
.....
转换成
itemno, zhi1, zhi2, zhi3,....
a, x1, x2, x3
b, x1, x4....数据很多。具体有多少个数据也不知道,有多少个值也不知道。
希望大家能够不吝赐教。
谢谢!!!
a , x1
a, x2
a, x3
b, x1
b, x4
.....
转换成
itemno, zhi1, zhi2, zhi3,....
a, x1, x2, x3
b, x1, x4....数据很多。具体有多少个数据也不知道,有多少个值也不知道。
希望大家能够不吝赐教。
谢谢!!!
解决方案 »
- cmd中使用sqlplus的小问题
- oracle update 问题
- 急救,oracle双机复制失败,延迟事务堆积很多,是否有办法快速清除延迟事务
- 关于SQLPLUS和PL/SQL的问题
- 这个为什么是第二范式?
- 我的經驗和我的問題(在存儲過程中獲取了1個ref cursor,想在Sp裏處理條件,然後再返回這個ref cursor怎麽做?)
- windows server 2003下安装oracle9i失败,请问有什么解决办法?
- 第一次在Oracle中写触发器,请求帮助!
- 各位高手,在已有的Oracle数据库ERP系统基础上添加新的功能模块,不想修改原系统,需要考虑哪些方面的内容???
- 问一个问题,大家不要笑话,为什么在连接Oracle时不论我输入什么用户名密码(用户名、密码在数据库中不存在),只要是以sysdba身份连接总
- oracle 的不同表空间里的表可以互相设置外健吗?
- sequence 和 insert select 的问题 ?
在網上找到這樣一個例子,但是好像還不行,
c1 c2
--- -----------
1 我
1 是
1 谁
2 知
2 道
3 不
……
转换为
1 我是谁
2 知道
3 不
这一类型的转换可以借助于PL/SQL来完成,这里给一个例子
CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)
RETURN VARCHAR2
IS
Col_c2 VARCHAR2(4000);
BEGIN
FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP
Col_c2 := Col_c2||cur.c2;
END LOOP;
Col_c2 := rtrim(Col_c2,1);
RETURN Col_c2;
END;
select distinct c1 ,get_c2(c1) cc2 from table;希望能有高手指點
这种如楼上所说,10G一个函数就解决了
10G以下,一句sql也能解决,就是麻烦点
真郁闷.....
不知道各位还有什么方法没有.....
10G以下用sys_connect_by_path+row_number() over+start with connect by 来生成详细写法可以参考此贴http://topic.csdn.net/u/20080505/11/a0958b42-d938-465f-972a-0f61a2969c97.html?seed=491226048这两种方法都是只生成一个列,只不列的内容是拼出来的如果是动态产生多列,只有用存储过程去拼了,很麻烦