现在我能从5个表中查询到的结果如下比如ID NAME VALUE
1 a 10
1 b 20
1 c 30
2 b 25
2 d 40我需要的结果是
ID a b c d
1 10 20 30
2 25 40
id, name ,value都不是一张表的,而且不知道name有多少种,也不知道会查出多少数据不知道有没有高手赐教
1 a 10
1 b 20
1 c 30
2 b 25
2 d 40我需要的结果是
ID a b c d
1 10 20 30
2 25 40
id, name ,value都不是一张表的,而且不知道name有多少种,也不知道会查出多少数据不知道有没有高手赐教
解决方案 »
- tomcat上发布项目报ORA-12505, TNS:listener does not currently know of SID given in conn
- PLSQL Developer 8 一个SQL窗口插入数据,另一个SQL窗口查不到
- ora-12560问题。急急急
- 语句优化的问题
- 请教
- 怎么样封装一个已写好的 SQL 语句来统计这个sql 的条数?
- js中对日期的操作处理
- 横向表转换纵向表
- 做一个数据库管理员要什么样的资格,或是什么层次才能胜任?
- 很棘手的问题!
- -------------------------大家在项目中用blob或者clob的时候多不多---------------------------
- ORA-24333: zero iteration count
参考下上面的,对于不固定的比较繁琐
http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html
编译过程后,执行
proc('hzl','id','name','value');select * from v_tmp查看结果
select id,max(decode(name,'a',name,'')) a,max(decode(name,'b',name,'')) b,max(decode(name,'c',name,'')) c,max(decode(name,'d',name,'')) d from rs;另外,你说的name不知道有多少,我介意你用Oracle的分析函数去实现,最好做个rank好处理些。
这个对你有帮助的
---------- ---------- ----------
1 a 10
1 b 20
1 c 30
2 b 25
2 d 40SQL> select id,
2 max(decode(name,'a',value)) a,
3 max(decode(name,'b',value)) b,
4 max(decode(name,'c',value)) c,
5 max(decode(name,'d',value)) d
6 from t1
7 group by id; ID A B C D
---------- ---------- ---------- ---------- ----------
1 10 20 30
2 25 40
那么可以参照#2的兄弟给出的链接 http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html总结的挺好的~
sum(decode(name,'b',null))"b",
(decode(name,'c',null))"c",
(decode(name,'d',null))"a"
from table_name
group by id
上述的都是固定的Name (a,b,c,d), 如果 Name 不固定,需要取得所有的Name (Distinct) 做循环,
拼写动态的SQL ,比较麻烦,大致思路如下:
for i in 1..Name列数 loop
sql := sql || 'MAX(decode(t1.SEQ,' || i || ',ID)) ID_' || i || ',';
在子查询中取得SEQ
sql:= sql || ' SELECT DENSE_RANK() OVER(ORDER BY Name ASC) SEQ, e.* ';