欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

抢救!怎样将可变列转为行?

更新时间: 2014-01-05 02:14:54 责任编辑: Author_N1

 

急救!!怎样将可变列转为行??
一张病人费用表,含有以下字段:住院号(NO)、费用项目编号(CODE)、费用金额(COST)。
其中每一个病人可能有若干种费用项目,并且费用项目是可重复的。详见下表:

住院号 费用项目编号 费用金额
ZY001 010         30
ZY001 055         60
ZY001 055         40
ZY001 068         50
ZY002 011         30.2
ZY002 047         68
ZY002 055         80
ZY002 019         55.5
ZY002 019         63

现在要求统计出每个病人的每一项费用的金额汇总
以如下方式输出:

住院号 010 055 068 ……
ZY001 30 100 50 ……
ZY002 0 80 0 ……


--参考方法--
生成 select 语句的 pl/sql 块如下:

set serveroutput on
declare 
  cursor c1 is select distinct code from t1 order by code;
  v_sql varchar2(1024);
begin
  v_sql := 'select '
--参考方法--
chr(10)
--参考方法--
'no,'
--参考方法--
chr(10);
  for c1_result in c1 loop
    v_sql := v_sql
--参考方法--
'sum(case code when '''
--参考方法--
c1_result.code
--参考方法--
''' then cost else 0 end) c'
--参考方法--
c1_result.code
--参考方法--
','
--参考方法--
chr(10);
  end loop;
  v_sql := substr(v_sql, 0, length(v_sql) - 2);
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:54
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7520/
本文WWW.DOC100.NET DOC100.NET版权所有。