日期:2014-05-17  浏览次数:20937 次

ORACLE 竖表转横表的问题
表结构与信息如下:
CREATE TABLE TB_ITEM_INFO(
 item_name varchar2(20),
 item_data number(10,4),
 constraint PK_ITEM_INFO primary key (item_name)
);

item_name(primary_key) item_data
  value1 1.0
  value2 2.0
  value3 3.0

欲转为:
 value1 value2 value3
  1.0 2.0 3.0

在网上看了用decode函数的都是要有基准进行分组的,而这种转化没有基准,如果用decode函数结果就是
value1 value2 value3
  1.0 0 0
  0 2.0 0
  0 0 3.0

望高手能给个完整的转换sql脚本,感谢~


------解决方案--------------------
SQL code
--上面有误,这个
with TB_ITEM_INFO as(
  select 'value1' item_name, 1.0 item_data from dual union all
  select 'value2' item_name, 2.0 item_data from dual union all
  select 'value3' item_name, 3.0 item_data from dual)

SELECT SUM(decode(item_name, 'value1', item_data, 0)) value1,
       SUM(decode(item_name, 'value2', item_data, 0)) value2,
       SUM(decode(item_name, 'value3', item_data, 0)) value3
  FROM TB_ITEM_INFO;