月 部门号 业绩
一月 1 10
一月 2 20
二月 1 30结果为部门号 一月 二月
1 10 30
2 20 null用一个sql句子或者存储过程弄出来,大家帮忙看看!
一月 1 10
一月 2 20
二月 1 30结果为部门号 一月 二月
1 10 30
2 20 null用一个sql句子或者存储过程弄出来,大家帮忙看看!
解决方案 »
- oracle连接数设置过大,导致oracle启动不了
- win 7装oracle出错!!!
- 安装了oracle 11g client,发现木有dbca,杯具啊
- 求一条SQL查询
- 如何用JDBC从Oracle中获取max_idle_time
- 在trigger中,涉及基本表的操作该如何处理啊?
- blob和clob最大是多少?还是没有最大限制?
- 同一局域网内的两个Oracle数据库建立数据库链路的问题?
- 哪里有《Oracle9i基础与提高》电子版下载
- "未找到 Oracle 客户端和网络组件..." 这个问题是什么原因造成的???100分急盼高手回答!!!
- in, or, temporary table?
- 关于oracle10G的内存分配和字符集问题
,sum(case when 月=2 then 业绩 else 0 end) 二月
from tb
group by 部门
sum(decode(月,'一月',1,0) 一月
,sum(decode(月,'二月',1,0) 二月
from tb
group by 部门
就是max+decode+group
或者sum+decode+groupdecode也可以用case when来代替
select bu as 部门,
sum(decode(yue,'一月',yeji,null)) as 一月,
sum(decode(yue,'二月',yeji,null)) as 二月
from table
group by 部门
sum(decode(month,'一月',wage,null)) "一月",
sum(decode(month,'二月',wage,null)) "二月"
from aa
group by deparid
sum(decode(月,'一月',业绩,0) 一月
,sum(decode(月,'二月',业绩,0) 二月
from tb
group by 部门
表已创建。为了将列转换为行,10g及以前版本需要:
SQL> SELECT
2 OWNER,
3 SUM(DECODE(SEGMENT_TYPE, 'TABLE', BYTES)) TABLE_SIZE,
4 SUM(DECODE(SEGMENT_TYPE, 'TABLE PARTITION', BYTES)) TABLE_PART_SIZE,
5 SUM(DECODE(SEGMENT_TYPE, 'INDEX', BYTES)) INDEX_SIZE,
6 SUM(DECODE(SEGMENT_TYPE, 'INDEX PARTITION', BYTES)) INDEX_PART_SIZE
7 FROM T
8 GROUP BY OWNER;OWNER TABLE_SIZE TABLE_PART_SIZE INDEX_SIZE INDEX_PART_SIZE
------------------------------ ---------- --------------- ---------- ---------------
WKSYS 2621440 5177344
MDSYS 11993088 131072 6881280 393216
YANGTK 1114112 65536
TSMSYS 65536 65536
WK_TEST 5767168 6553600
OUTLN 196608 262144
CTXSYS 2031616 3407872
OLAPSYS 7471104 8847360
FLOWS_FILES 65536 262144
SYSTEM 7077888 2490368 9568256 3276800
EXFSYS 1310720 2490368
DBSNMP 1048576 524288
ORDSYS 3670016 5832704
SYSMAN 53608448 69402624
XDB 17170432 7471104
FLOWS_030000 41680896 54329344
SYS 547356672 8716288 165216256 7929856
WMSYS 2424832 3866624
已选择18行。在11g中可以使用新增的语法PIVOT:
SQL> SELECT *
2 FROM (SELECT OWNER, SEGMENT_TYPE, BYTES FROM T)
3 PIVOT (SUM(BYTES) FOR SEGMENT_TYPE IN
4 ('TABLE' TABLE_SIZE, 'TABLE PARTITION' TABLE_PART_SIZE,
5 'INDEX' INDEX_SIZE, 'INDEX PARTITION' INDEX_PART_SIZE));OWNER TABLE_SIZE TABLE_PART_SIZE INDEX_SIZE INDEX_PART_SIZE
------------------------------ ---------- --------------- ---------- ---------------
WKSYS 2621440 5177344
MDSYS 11993088 131072 6881280 393216
YANGTK 1114112 65536
TSMSYS 65536 65536
WK_TEST 5767168 6553600
OUTLN 196608 262144
CTXSYS 2031616 3407872
OLAPSYS 7471104 8847360
FLOWS_FILES 65536 262144
SYSTEM 7077888 2490368 9568256 3276800
EXFSYS 1310720 2490368
DBSNMP 1048576 524288
ORDSYS 3670016 5832704
SYSMAN 53608448 69402624
XDB 17170432 7471104
FLOWS_030000 41680896 54329344
SYS 547356672 8716288 165216256 7929856
WMSYS 2424832 3866624
已选择18行。简单介绍一下语法。PIVOT操作后面是聚集函数,这里需要计算汇总的空间,因此选择了SUM。然后是设置根据SEGMENT_TYPE的不同的值,显示为不同的列。