躲不开的心痛 2018-07-24 02:01 采纳率: 0%
浏览 480
已采纳

运用存储过程和游标,帮助写一个查询的语句,最后输出结果,可以先不考虑笛卡尔积的问题

Comm.serv:用户表
正常在用用户:state = 2HA
CDMA用户:product_id = 379
Serv_id:用户编码 acct_nbr:用户号码

Comm.serv_acct:账户用户关联关系表
有效数据 state='10A'
Acct_id:账户编码

Comm.acct:账户表
Acct_name:账户名称

Acct.acct_balance:余额表
Balance:余额

Acct.ACCT_ITEM_201805:5月费用表
Amount:费用
Acct.ACCT_ITEM_201806:6月费用表
Amount:费用

Bill.acct_item_aggr_11807:实时费用表(在billdb)
Charge 实时费用

Acct.acct_credit:信用度表
Credit_amount:信用度值

Sms_info:短信发送表
Id:唯一值,消息ID
Msisdn:电话号码
FLAG:SEND
MSG:短信内容
Get_date:短信发送时间
Send_date = get_date
其他字段填空

欠费=余额-4、5月份话费-实时话费-信用度

要求:
1、统计出来所有用户欠费金额,统计信息包括:账户名称 ,账户ID,用户ID,余额、4月份话费、5月份话费、实时话费、信用度、欠费金额
2、对于欠费的用户,发送短信。短信内容:“xxx您好,截止到yyyy-mm-dd hh24:mi:ss,您已经欠费xx元,请您及时缴费! ”

select a.serv_id, --用户id
c.acct_name, --账户名称
c.acct_id, --账户id

d.balance --余额
e.amount, --四月话费
f.amount, --五月话费
g.charge, --实时费用
h.credit_amount --信用度
(d.Balance - e.amount - f.amount - g.charge - h.credit_amount) as Arrearage --欠费金额
from Comm.serv a, --用户表
Comm.serv_acct b, --账户用户关联关系表
Comm.acct c, --账户表
Acct.acct_balance d, --余额表
(select serv_id, sum(amount) amount from acct.ACCT_ITEM_201805 group by serv_id) e, --五月话费
(select serv_id, sum(amount) amount from acct.ACCT_ITEM_201806 group by serv_id) f, --六月话费
bill.acct_item_aggr_11807@bill_228 g,--实时费用
acct.acct_credit h --信用度表
where a.state = '2HA'
and a.product_id = '379'
and a.serv_id = b.serv_id
and b.state = '10A'
and a.serv_id = b.serv_id
and b.acct_id = c.acct_id
and c.acct_id = d.acct_id
and a.serv_id = e.serv_id
and a.serv_id = f.serv_id
and a.serv_id = g.serv_id这个是我原来写的,会产生笛卡尔积,实时话费也需要加起来
还有一点,除了6月份的那个表都有几千万的数据,我是一个小白,希望你们这些大神帮助我

  • 写回答

4条回答

  • 609127400 2018-07-24 07:08
    关注

    游标的使用步骤:
    1.声明一个游标
    如:
    EXEC SQL DECLARE CSOR CURSOR FOR SELECT ENAME, JOB, SAL FROM EMP WHERE DEPTNO=:DEPTNO;
    声明了一个叫CSOR的游标,该游标从EMP表中读取ENAME,JOB,SAL字段
    2.打开一个游标
    如:
    EXEC SQL OPEN CSOR
    3.依次从游标中获取每一条数据(一般在一个循环中)
    如:
    while(条件){
    //每次取出一条数据放到变量中
    EXEC FETCH CSOR INTO 变量名
    //使用数据
    }

    4.使用后关闭游标
    EXEC SQL CLOSE CSOR

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

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题