请教Oracle中相关分组SQL

[复制链接]
查看11 | 回复7 | 2011-11-1 16:25:22 | 显示全部楼层 |阅读模式
目前有这样的一张表 device ,数据是这样的:
年份 季度单位数量
2010 1AAA 100
2010 2AAA 1500
2010 3AAA 700
2010 1 BBB 200
2010 2BBB300
想实现这样的效果:

数量
单位 1季度 2季度3季度4季度
AAA 100 1500700 0
BBB 20030000
请教下这样的分组SQL该如何实现,谢谢了


回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
简单的行列转换:
select
单位,
max(case when 季度 = 1 THEN 数量 END),
max(case when 季度 = 2 THEN 数量 END),
...
FROM
...

回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
很感谢回帖。
不过 ,我试了下,好像出来的结果不是想象中的那样啊,能具体说下吗
回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
把楼上的代码改改即可!
select
单位,
sum(case when 季度 = 1 THEN 数量 END),
sum(case when 季度 = 2 THEN 数量 END),
...
FROM
...
回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
风铃中の鬼 发表于 2011-11-8 12:35
简单的行列转换:
select
单位,

如果同一个单位的同年同一季度可能会有2条以上就招4楼那样把MAX改成SUM
回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
很感谢各位回复,问题已经解决了,不过不是用的上述方法,用了种比较简单的decode方式实现的,再次感谢


回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
decode就是case when
回复

使用道具 举报

千问 | 2011-11-1 16:25:22 | 显示全部楼层
行转列的问题,比较简单
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行