当前位置: 代码迷 >> Oracle开发 >> 怎么用SELECT实现
  详细解决方案

怎么用SELECT实现

热度:1014   发布时间:2016-04-24 08:04:33.0
如何用SELECT实现
我有一个表数据:
ID SEQ TYPE VALUE
1 1 T1 1
1 2 T2 1
1 3 T3 4
1 4 T2 1
2 1 T1 4
2 2 T2 5
...

结果为
ID T1 T2 T3
1 1 2 4
2 4 5 0
...

同一ID把所有TYPE值按列显示,若有相同,则相加。
望高手指教!

------解决方案--------------------
SQL code
with tt as(  select 1 id, 1 seq, 'T1' type, 1 value from dual union all  select 1 id, 2 seq, 'T2' type, 1 value from dual union all  select 1 id, 3 seq, 'T3' type, 4 value from dual union all  select 1 id, 4 seq, 'T2' type, 1 value from dual union all  select 2 id, 1 seq, 'T1' type, 4 value from dual union all  select 2 id, 2 seq, 'T2' type, 5 value from dual)  SELECT id,       SUM(decode(TYPE, 'T1', VALUE, 0)) t1,       SUM(decode(TYPE, 'T2', VALUE, 0)) T2,       SUM(decode(TYPE, 'T3', VALUE, 0)) T3  FROM tt GROUP BY id;
------解决方案--------------------
探讨

谢谢,个数是不定的,可如果不用存储过程可以实现吗?

------解决方案--------------------
俺不会啊
------解决方案--------------------
行列转换,太常见了。

不固定列的,可以动态拼SQL来实现

------解决方案--------------------
动态sql 明天上班写个
------解决方案--------------------
顶一下
oracle QQ群:54775466
欢迎您的到来 
大家一起探讨。
------解决方案--------------------
比较经典
http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html
  相关解决方案