数据库提数语句

来源:互联网 发布:辅助数据库已初始化 编辑:程序博客网 时间:2024/06/06 11:50

需求发了个任务给我,是对数据库提数,刚开始对于需求内容没有看详细,导致整个提数过程很是漫长繁琐。

要求:配合北京**委专项检查,提取一产品、二产品,两个产品的业务一及业务二的数据

    提取内容:

    业务一:分公司名称、产品名称、业务受人名称、业务单号、业务标识号

    业务二: 分公司名称、产品名称业务受人名称、业务理算号、业务单号、业务标识

    业务一的条件:业务一的开始时间:2016-1-1~2016-12-31,2017-1-1~2017-11-30

    业务二的条件:业务二的开始时间:2016-1-1~2016-12-31,2017-1-1~2017-11-30

分析:北京地业务一及业务二在规定时间范围下的一产品及二产品的数据,则根据业务及时间的不同分别提取四个文档数据

    1.一业务2016年数据

    2.一业务2017年数据

    3.二业务2016年数据

    4.二业务2017年数据

提数文档字段如下:

    分公司名称、一产品名称+二产品名称、一业务受人名称、一业务单号、一业务标识号

    分公司名称、一产品名称+二产品名称业务受人名称、二业务理算号、二业务单号、业务标识号 

提数sql分析:

    提数即查询出表中数据,并导出结果,基本sql:select …1…from…2…where …3…order by…4…

    1:需要查询出的字段:

 业务一:分公司名称、产品名称、业务受人名称、业务单号、业务标识号

     业务二: 分公司名称、产品名称业务受人名称、业务理算号、业务单号、业务标识

    2:相关表格:

       保单基本信息表A(别名a)、受益人信息表B(别名b)、系统标识物信息C(别名c)、产品表D(别名d)、产品表E(别名e、定损清单表F(别名f)、估损单J(别名       j)、赔付单H(别名h)、赔案I(别名i)

    3:查询条件

       业务一:

             保单基本信息表与受益人信息表以根节点相关联:a.topactualid=b.topactualid

         受益人信息表的事实id是系统标识物信息表的父节点:b.actualid=c.parentactualid

            保单号不能为空:a.policy_no is not null

            录单号不取模块二的数据:a.proposal_no not  like"APP%"(系统包含两大模块,一模块与二模块的录单号皆保存在同一张表中,所以取数时需排除模块二的录单号)

            使用 trunc()函数截取时间:trunc(a.start_date,'DD') between date'2016-01-01' and date'2016-12-31',业务的开始时间范围

            分公司的代码:a.branch_code='1010100';

            产品范围:a.product_code in ('10000000','10000001')

       业务二:

            定损清单表F的估损单id与估损单J的估损单id相关联:f.estimated_loss_bill_id=j.estimated_loss_bill_id

            估损单J的事故id与赔付单H的事故id相关联:h.accident_id=j.accident_id

            赔付单H的事故id与赔案I(别名i)的事故id相关联:i.accident_id=h.accident_id

            分公司的代码:a.branch_code='1010100';

            产品范围:a.product_code in ('10000000','10000001')

           使用 trunc()函数截取时间:trunc(h.start_date,'DD') between date'2016-01-01' and date'2016-12-31',业务的开始时间范围

     4:排序要求

    根据分公司、保单号、事实id排序

提数相关表分析:

保单基本信息表A(别名a):A表保存的是用户录入业务的数据信息(皆以code形式保存)

受益人信息表B(别名b):B表保存的是受益人的基本数据信息,其中包含提数要求中的受益人名称

产品表D(别名d):产品名称与保单产品代码关联

产品表E(别名e):分公司视图表中的分公司名称与保单基本信息表中分公司代码关联

定损清单表F(别名f)、估损单J(别名j)、赔付单H(别名h)、赔案I(别名i)

提数语句:

业务一:

 select 
 (select e.branch_name from E e where e.branch_code = a.branch_code) 分公司,
 (select d.name from D d where d.productcode=a.product_code) 产品名称,
 b.insured_name 受益人名称,
 a.policy_no 保单号,
 c.mark_code 标识号
 from A a,B b,C c
 where a.topactualid=b.topactualid and b.actualid=c.parentactualid
 and a.policy_no is not null and a.proposal_no not like 'APP%'
 and trunc(a.start_date,'DD') between date'2016-01-01' and date'2016-12-31' --此处时间可根据需求要求更改
 and a.branch_code = '1010100'
 and a.product_code in('15040100','15040300')
 order by a.branch_code,a.policy_no,c.actualid;


业务二:

 select  
 (select e.branch_name from E e where e.branch_code = c.branch_code) 分公司,
 (select d.name from D d where d.productcode=c.product_no) 产品名称,
 f.insurant_name 受益人名称,
 h.payment_plan_no 理赔号,
 i.policy_no 保单号,
 f.plot_no 标识号
 from F f,J j,H h,I i
 where f.estimated_loss_bill_id=j.estimated_loss_bill_id
 and h.accident_id=j.accident_id
 and i.accident_id=h.accident_id
 and i.product_no in('15040100','15040300')
 and i.branch_code='1010100'
 and trunc(h.payment_audit_date,'DD') between date'2016-01-01' and date'2016-12-31'

数据库中执行sql,导出为.csv文件即可。

重点:了解表与表之间的关联

原创粉丝点击