一个列变行的问题 ,请问如何实现

realjoshzuo 2012-08-31 11:02:15
oracle版本10g:


单位 月份 类型 零售金额 折扣金额
SH 201208 坐垫 80000 900
SH 201208 把手 70000 600
SH 201208 前叉 120000 1200
。。。
要变成:


单位 月份 类型 坐垫 把手 前叉 。。。
SH 201208 零售金额 80000 70000 120000
SH 201208 折扣金额 900 600 1200


的SQL ,类型是固定的,但是比较多 ,谢谢!
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fw0124 2012-08-31
  • 打赏
  • 举报
回复
with t(单位, 月份, 类型, 零售金额, 折扣金额)  as (
select 'SH', '201208', '坐垫', 80000, 900 from dual
union all select 'SH', '201208', '把手', 70000, 600 from dual
union all select 'SH', '201208', '前叉', 120000, 1200 from dual
)
select 单位, 月份, '零售金额' as 类型,
sum(decode(类型, '坐垫', 零售金额)) as 坐垫,
sum(decode(类型, '把手', 零售金额)) as 把手,
sum(decode(类型, '前叉', 零售金额)) as 前叉
from t group by 单位, 月份
union all
select 单位, 月份, '折扣金额' as 类型,
sum(decode(类型, '坐垫', 折扣金额)) as 坐垫,
sum(decode(类型, '把手', 折扣金额)) as 把手,
sum(decode(类型, '前叉', 折扣金额)) as 前叉
from t group by 单位, 月份;
软件钢琴师 2012-08-31
  • 打赏
  • 举报
回复
用 case 和 sum
select sum(case field1 when 1=1 then aa end) fieldname
from tablename
group 。。。。
自己qunong吧

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧