行列转换

DannyHau 2013-06-09 11:33:18
初始结果是这样:
AAAAAA,9,201301,LATE PAY
AAAAAA,9,201302,LATE PAY
AAAAAA,9,201303,LATE PAY
BBBBBB,9,201301,LATE PAY
BBBBBB,9,201302,LATE PAY
BBBBBB,9,201303,LATE PAY


如何得到这样的结果?
AAAAAA,9,201301,9,201302,9,201303,LATE PAY
BBBBBB,9,201301,9,201302,9,201303,LATE PAY

求救。。。。
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sych888 2013-06-09
  • 打赏
  • 举报
回复
11G 用PIVOT 建测试表,插入测试数据 create table test(id int,name varchar(20),quarter int,profile int) insert into test values(1,''a'',1,1000) insert into test values(1,''a'',2,2000) insert into test values(1,''a'',3,4000) insert into test values(1,''a'',4,5000) insert into test values(2,''b'',1,3000) insert into test values(2,''b'',2,3500) insert into test values(2,''b'',3,4200) insert into test values(2,''b'',4,5500) select * from test id name quarter profile ----------- -------------------- ----------- ----------- 1 a 1 1000 1 a 2 2000 1 a 3 4000 1 a 4 5000 2 b 1 3000 2 b 2 3500 2 b 3 4200 2 b 4 5500 (8 row(s) affected) 利用PIVOT将个季度的利润转成横向显示: select id,name, [1] as "一季度", [2] as "二季度", [3] as "三季度", [4] as "四季度" from test pivot ( sum(profile) for quarter in ([1],[2],[3],[4]) ) as pvt
  • 打赏
  • 举报
回复
这个属于行列转换喽:列转行,行转列,不过万变不离其宗。 SELECT COL1,COL2,SUM(DECODE(COL3,'201301','201301')), COL2,SUM(DECODE(COL3,'201302','201302')), COL2,SUM(DECODE(COL3,'201303','201303')),COL4 FROM TEST GROUP BY COL1,COL4,COL2 ORDER BY COL1; 仅供参考
lhdz_bj 2013-06-09
  • 打赏
  • 举报
回复
最好写个函数喽

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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