ascendlin 2011-08-22 13:46 采纳率: 0%
浏览 203
已采纳

一个行转列的问题

[code="java"]

create table T_temp
(
e_ID VARCHAR2(255 CHAR),
E_CODE VARCHAR2(255 CHAR),
E_NAME VARCHAR2(255 CHAR),
e_POST VARCHAR2(255 CHAR),
e_DEPT VARCHAR2(255 CHAR),
e_TYPE VARCHAR2(255 CHAR),
e_date DATE,
e_DAYS NUMBER
)

[/code]
[code="java"]

insert into t_temp(e_id,e_code,e_name,e_dept,e_post,e_type,e_date,e_days)
select '1','001','张三','财务部','经理','病假',to_date('2011-08-05','yyyy-MM-dd'),0.5 from dual
union all
select '1','001','张三','财务部','经理','事假',to_date('2011-08-25','yyyy-MM-dd'),0.5 from dual
union all
select '1','001','张三','财务部','经理','年假',to_date('2011-09-13','yyyy-MM-dd'),5 from dual
union all
select '2','002','李四','技术部','职员','事假',to_date('2011-08-14','yyyy-MM-dd'),1 from dual
union all
select '2','002','李四','技术部','职员','旷工',to_date('2011-08-20','yyyy-MM-dd'),0.5 from dual

[/code]

想实现如下的显示方式;
[img]
编号 部门 姓名 职务 月份 事假 病假 旷工 婚假 年假

e001 财务部 张三 经理 一月 0 0 0 0 0

e001 财务部 张三 经理 二月 0 0 0 0 0

e001 财务部 张三 经理 三月 0 0 0 0 0

e001 财务部 张三 经理 四月 0 0 0 0 0

e001 财务部 张三 经理 五月 0 0 0 0 0

e001 财务部 张三 经理 六月 0 0 0 0 0

e001 财务部 张三 经理 七月 0 0 0 0 0

e001 财务部 张三 经理 八月 0.5 0.5 0 0 0

e001 财务部 张三 经理 九月 0 0 0 0 5

e001 财务部 张三 经理 十月 0 0 0 0 0

e001 财务部 张三 经理 十一月 0 0 0 0 0

e001 财务部 张三 经理 十二月 0 0 0 0 0

[/img]

  • 写回答

5条回答 默认 最新

  • mymailzxj_1 2011-08-23 10:08
    关注

    像这样要产生每月的数据,不存在的月份数据又是0,是用SQL来实现好还是在程序里面处理好呢?

    //现在sql中已经解决了不存在月份数据为0的问题了。
    以为这么多年电信行业经验,没有那个应用程序的处理性能能比oracle数据库处理速度还要快的。应用程序里面无非就是循环处理,大数据量会给服务器造成很大的压力。另外对于大数据量处理需要进行分页处理的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?