开始格式
年份 单位 人数
2010 一部 10
2010 二部 20
2011 一部 30 转换后的格式
年份 人数 人数
2010 10 20
2011 30 0如何实现。。
年份 单位 人数
2010 一部 10
2010 二部 20
2011 一部 30 转换后的格式
年份 人数 人数
2010 10 20
2011 30 0如何实现。。
解决方案 »
- enterprise manager配置失败
- 请问大家同义词有什么用?
- 存储过程执行后不出错,但表中也未插入数据,是何原因?
- 就50分了!全给了!由oracle访问sql的问题!
- 在sqlplus里执行一个update,就提示“服务器会话因致命错误而终止”,代码见内
- clob和blob的问题请教。
- 用 select max() 语句,记录为空的时候怎样做处理呢?
- 在plsql中,如果要从一个有100万行的表中把数据读出来到变量中,然后把变量写到文件中,应该怎么做,游标太慢了。
- 关于ORACLE的文件操作?
- 在线急等!读取CLOB字段,字符串缓冲区太小,怎么解决?
- 如何连接到远程的数据库
- sql 语句 oder by?
--你描述不清啊,我估计你是要得到的列:年份 一部人数 二部人数
select 年份,
nvl(sum(decode(单位,'一部',人数,0)),0) as 一部人数,
nvl(sum(decode(单位,'二部',人数,0)),0) as 二部人数
from table
group by 年份
with t as
(
select 2010 tyear,'一部' dept,10 un from dual union all
select 2010 tyear,'二部' dept,20 un from dual union all
select 2011 tyear,'一部' dept,30 un from dual
)
select tyear,nvl(max(a1),0),nvl(max(a2),0) from
(select tyear,decode(dept,'一部',un)a1,decode(dept,'二部',un)a2
from t order by tyear)group by tyear
只要你部门是可列举的,就用这个方法把,nvl()可以去掉
测试表
create table TEST
(
USER_NAME VARCHAR2(60) not null,
TESTDATE DATE,
STATION VARCHAR2(200)
)加入测试数据
INSERT INTO TEST ('user1',sysdate,'satation1')
INSERT INTO TEST ('user1',sysdate-1,'satation2')
INSERT INTO TEST ('user2',sysdate-2,'satation2')SELECT * FROM TEST
查询结果:
然后执行:
select to_char(testdate,'yyyy/mm/dd'),count(*),STATION from test group by to_char(testdate,'yyyy/mm/dd'),STATION结果为:
如何得到最终想要的结果,最终想要的结果格式为
create table TEST
(
USER_NAME VARCHAR2(60) not null,
TESTDATE DATE,
STATION VARCHAR2(200)
)加入测试数据
INSERT INTO TEST ('user1',sysdate,'satation1')
INSERT INTO TEST ('user1',sysdate-1,'satation2')
INSERT INTO TEST ('user2',sysdate-2,'satation2')SELECT * FROM TEST
查询结果:
然后执行:
select to_char(testdate,'yyyy/mm/dd'),count(*),STATION from test group by to_char(testdate,'yyyy/mm/dd'),STATION结果为:
如何得到最终想要的结果,最终想要的结果格式为