oracle下可以用函数decode处理:
select 产品名称,
sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额,
sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额,
sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额,
sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额,
from 表名
group by 产品名称;
你所谓的行列转换应该是指纵表转横表,横表转纵表.
给你个例子
纵表转横表:
使用DECODE语句,可以很方便的将纵表转为横表,例子如下:
原表查询结果:
ID MAJOR CURRENT_CREDITS
------ ---------------- ---------------
我们要把各科成绩从同一列转到不同的列中去.
SQL?select id,
sum(decode(major,'Computer Science',current_credits,0)) cs,
sum(decode(major,'History',current_credits,0)) his,
sum(decode(major,'Economics',current_credits,0)) eco
from students
group by id
ID CS HIS ECO
------ ----------- ------------- -----
横表转纵表:
使用 UNION 即可实现将横表转为纵表,以上面的表为例:
转换前:
SQL?select id, 'Computer Science' major,cs current_credits
union
select id, 'History' major,his current_credits
select id, 'Economics' major,eco current_credits
需要oracle
server的返回结果集(就是table)的函数.
需要参考的oracle资料:
索引表,table函数,
pipelined.依次去网上搜索,会得到你要的答案.
如果再不行,我可以给你sample.
推荐用WM_CONCAT函数
FROM TABLE_A
UNION ALL
GROUP BY A.STD