




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据分层汇总交叉报表SQL语句实现方法在管理系统中,管理人员往往需要对业务数据进行不同需求的分层汇总,并产生各种形式交叉报表。为了实现此类报表,程序员需要构造层次结构非常复杂的SQL语句,甚至使用前台编程工具或其它报表工具来完成。以下通过二个实例,介绍此类报表的实现方法。一、WITH as 语句使用WITHAS语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。Oracle数据库像对待内联视图或临时表一样对待被引用的子查询名称,从而起到一定的优化作用。with子句是9i新增语法。你可以在任何一个顶层的SELECT语句以及几乎所有类型的子查询语句前,使用子查询定义子句。被定义的子查询名称可以在主查询语句以及所有的子查询语句中引用,但未定义前不能引用。with子句中不能嵌套定义,但子查询中出现的“子查询定义”语句可以引用已定义的子查询名称。复杂的查询会产生很大的sql,with as语法显示一个个中间结果,显得有条理些,可读性与易维护性大为提高。前面的中间结果可以被语句中的select或后面的中间结果表引用,类似于一个范围仅限于本语句的临时表,在需要多次查询某中间结果时可以提升效率。语法结构:with t1 as (.),t2 as (.) 二、字典准备 为了实现数据分层汇总交叉报表,需要建立行的层次结构表与列的交叉汇总对照表。1、 交叉汇总对照表:一般分为,代码字段与代码汇总二个字段。如:SELECT fee_code,fee_stat_cate FROM FIN_COM_FEECODESTAT WHERE REPORT_CODE = ZY11FEE_CIDE为数据表中的费用代码,FEE_STAT_CATE为费用汇总归类代码。2、层次结构表:一般分为,需要分层汇总的代码、汇总报表行标题、汇总报表排序代码、层次代码、分层汇总的父节点代码与报表显示标志。如:某报表按科室汇总产生分层报表的层次结构表如下: DEPT_CODEDEPT_NAMESORTIDROOTLEVELLEVEL_DEPTSHOW_F1S001本月合计012S10012S005内科12S001130014 消化内科113S005140015 血液内科123S005150011 内科心血管133S005160013 内分泌科143S005170016 呼吸内科153S005180017 肾病内科163S00519S006综合科22S0011100033 综合一213S0061110034 综合二223S0061120035 综合三233S0061130036 综合四243S0061140048 综合五253S0061150037 综合六263S0061160019感染科32S0011170018神经内科42S005118S002外科52S001119S007 普外科513S0021200042 肝胆胰外科一病区51014S0071210002 肝胆胰外科二病区51024S0071220001 甲乳疝血管外科病区51034S0071230003 结直肠肛门外科病区51044S0071240004 胸外科523S0021250006 泌尿外科52023S0021260005 脑外科52033S002127S003 骨科533S0021280009 创伤修复病区53014S0031290008 显微、手外科病区53024S0031300040 脊柱外科一病区53034S0031310044 骨肿瘤、脊柱外科二病区53044S0031320045 关节外科病区53054S0031330046 创伤骨科病区53064S003134S015 肝胆研究院543S0021350054 肝胆研究院一574S0151360079 肝胆研究院二584S015137S016儿科62S0011380038 儿科613S0161390039 新生儿623S016140S008妇产科72S0011410027 妇科713S0081420029 产科723S0081430024耳鼻喉科82S0171440025眼科92S0171450032皮肤科A2S0011460026口腔科A02S0171SQL语句: select * from COM_DEPT_FATHERDept_code 科室代码 dept_bane 科室结构名称 Sortid科室结构排序 Rootlevel 科室层次Level_dept 父节点代码 SHOW_F报表显示列三、实现方法1、业务数据如:原始数据表:FIN_IPB_FEEINFO INHOS_DEPTCODEFEE_CODETOT_COSTBALANCE_DATE1001305547.002012-12-29 08:54:11200136198.002012-12-29 08:54:1130013181240.002012-12-29 08:54:11400130539.502012-12-29 08:54:115001318170.002012-12-29 08:54:11600130539.502012-12-29 08:54:1170013141123.002012-12-29 08:54:118001388872.502012-12-29 08:54:1190013001106.852012-12-29 08:54:1110001317135.002012-12-29 08:54:11110013171487.002012-12-29 08:54:111200130018.972012-12-29 08:54:111300136208.002012-12-29 08:54:111400135318.002012-12-29 08:54:1115001305547.002012-12-29 08:54:111600136198.002012-12-29 08:54:1117001317130.002012-12-29 08:54:1118001317131.002012-12-29 08:54:11190013221550.002012-12-29 08:54:11200013002-100.502012-12-29 08:54:11210013001-8.972012-12-29 08:54:1122001317115.002012-12-29 08:54:112300015318.002012-12-29 08:54:1124000105532.002012-12-29 08:54:112500016204.002012-12-29 08:54:112600016198.002012-12-29 08:54:11字段名称INHOS_DEPTCODE 科室代码、FEE_CODE费用代码、TOT_COST金额、BALANCE_DATE统计日期2、生成交叉表 利用交叉汇总对照表,生成各底层统计单位的交叉表。SQL语句如下:select a.INHOS_DEPTCODE, count(distinct a.inpatient_no) as 人次, sum(a.tot_cost) as 合计收入, sum(decode(c.fee_stat_cate, 01, a.tot_cost, 0) as 药品收入, sum(decode(c.fee_stat_cate, 08, a.tot_cost, 0) as 床位收入, sum(decode(c.fee_stat_cate, 02, a.tot_cost, 0) as 检查收入, sum(decode(c.fee_stat_cate, 04, a.tot_cost, 0) as 治疗收入, sum(decode(c.fee_stat_cate, 05, a.tot_cost, 0) as 手术收入, sum(decode(c.fee_stat_cate, 03, a.tot_cost, 0) as 化验收入, sum(decode(c.fee_stat_cate, 06, a.tot_cost, 0) as 卫生材料, sum(decode(c.fee_stat_cate, 09, a.tot_cost, 0) as 诊察收入, sum(decode(c.fee_stat_cate, 10, a.tot_cost, 0) as 护理收入, sum(decode(c.fee_stat_cate, 07, a.tot_cost, 0) as 其他收入 from FIN_IPB_FEEINFO a, (SELECT * FROM FIN_COM_FEECODESTAT WHERE REPORT_CODE = ZY11) c where a.balance_state = 1 AND a.FEE_CODE = c.FEE_CODE and a.balance_date = TO_DATE(2013-08-01 00:00:00,yyyy-mm-dd hh24:mi:ss) AND a.balance_date = TO_DATE(2013-07-01 00:00:00,yyyy-mm-dd hh24:mi:ss) AND a.balance_date = to_date(2013-05-01 00:00:00, YYYY-MM-DD HH24:MI:SS) AND A.REG_DATE = to_date(2013-05-31 23:59:59, YYYY-MM-DD HH24:MI:SS) AND A.VALID_FLAG = 1 GROUP BY C.CODE ORDER BY C.CODE) A1 left join (SELECT * FROM COM_DICTIONARY WHERE TYPE = ZNSR and NAME门诊补号) A2 on (A1.DEPT_CODE=A2.CODE) WHERE A2.CODE NOT IN (0058,0125) Order by A2.CODE) select * from DEPT_TATDEPT_CODECOMMONEXPERTEMERGENCYREG_ALLDEPT_NAME000711320115门诊外科00510101VIP特诊005911200112本院保健科006045454723136905内科门诊006142982019846302外科门诊0062537225381148024妇产科门诊0064613112421597532眼科门诊00651427101428保健科00665653021868放化疗门诊00675141710685康复科门诊006817801233273040神经科门诊0069725185832586中医科门诊0070522141911942肿瘤科门诊007177100771高干门诊007214000140PICC专科门诊00741489538132040感染科0075601061同位素门诊0078380038造口伤口门诊00946544806967446口腔科0095639213132767981耳鼻喉科00971512980449门诊妇瘤0098684819942009042皮肤科0099226713528544473儿科01246634006634方便门诊(1楼)01381741850359肝胆外科门诊0141880088体检中心019930910310疼痛门诊023917960113检验科门诊025891681601732生殖医学中心02701787104602833门诊普外02712351123423587门诊骨外02721090110422196门诊泌外0273150791230门诊脑外0274159950254门诊胸外0275207499033067门诊心血管02761649192813578门诊消化02771602107902681门诊呼吸02782057128913347门诊内分泌02796222720894门诊血液028081952101340门诊肾病0281109019放射学专科门诊028222220224特需诊疗中心4、 年度记录-本年度合计SELECT 0000 as 序号,本年到本月累计 as 科室名称,SUM( DECODE(B.MARK,01,1,02,1,03,1,04,1,05,1,06,1,07,1,08,1,09,1,14,1,15,1,16,1,17,1,0) as 总计, -不统计急诊06 SUM( DECODE(B.MARK,01,1,02,1,03,1,04,1,05,1,07,1,08,1,09,1,14,1,15,1,16,1,17,1,0) as 小计, SUM( DECODE(B.MARK,04,1,05,1,09,1,16,1,17,1,10,-1,11,-1,12,-1,13,-1,0) ) AS 普诊, SUM( DECODE(B.MARK,01,1,02,1,03,1,07,1,08,1,10,1,11,1,12,1,13,1,14,1,15,1,0) ) AS 专家, SUM( DECODE(B.MARK,06,1,0) ) AS 急诊 FROM FIN_OPR_REGISTER AA, 挂号类型 B WHERE B.CODE = AA.REGLEVL_CODE AND AA.REG_DATE = trunc(to_date(2013-01-01 00:00:00, YYYY-MM-DD HH24:MI:SS),yyyy) AND AA.REG_DATE = to_date(2013-05-31 23:59:59, YYYY-MM-DD HH24:MI:SS) AND AA.VALID_FLAG =15、 本期累计select 0001 as 序号,本月合计 as 科室名称,sum(REG_ALL) as 总计,sum(COMMON+EXPERT) as 小计,sum(COMMON) as 普诊,sum(EXPERT) as 专家, sum(EMERGENCY) as 急诊 from DEPT_TAT6、 完整SQL语句with -挂号科室汇总 dept_tat as (SELECT A2.Code AS DEPT_CODE, NVL(A1.common,0) AS common, NVL(A1.expert,0) AS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洛阳文化旅游职业学院《现代生物分离工程含实验》2023-2024学年第二学期期末试卷
- 院感爆发考试试题及答案
- 员工安全环保试题及答案
- 云南新兴职业学院《细胞工程实验》2023-2024学年第二学期期末试卷
- 辽宁城市建设职业技术学院《色彩构成》2023-2024学年第二学期期末试卷
- 2025年执业药师资格证之《西药学专业一》预测试题含答案详解(预热题)
- 2025年执业药师资格证之《西药学专业一》预测试题附答案详解【典型题】
- 宁夏警官职业学院《英语语言学》2023-2024学年第二学期期末试卷
- 长沙轨道交通职业学院《小学英语课堂教学观摩》2023-2024学年第二学期期末试卷
- 成都艺术职业大学《高级商务英语1》2023-2024学年第二学期期末试卷
- 进口食品企业质量安全管理制度模版
- 15-1外墙节能构造现场施工检验记录
- 江西省重点中学自主招生考试物理试题
- 【基于SLP方法的物流园平面布局规划案例分析7400字(论文)】
- 实验一 单结晶体管触发电路及单相半波可控整流电路实验
- MSA-GRR数据自动生成工具(已经解密)
- 2022江苏苏州工业园区苏相合作区助理人员招聘15人上岸笔试历年难、易错点考题附带参考答案与详解
- 广东省广州市增城区2022-2023学年一年级下学期期末数学试卷
- 水处理设备供货整体技术服务方案
- 国家开放大学《汉语通论》形考任务1-4+终结性考核参考答案
- 石油开采常规地质录井培训教材课件
评论
0/150
提交评论