某业务系统用来实现资金进出的记录,业务系统的管理数据库的部分关系模式如下所示:
基础信息表(KMBM,KMMC,KMSX,CLX)
历史资金明细发生记录表(KMBM,YE)
近期资金明细发生记录表(ID1,ID2,KMBM,LRLC,FSE)
表一:
KMBM KMMC KMSX ZCLX
101 银行存款 银行存款 资产类
10101 北京存款 银行存款 资产类
10102 上海存款 银行存款 资产类
201 预收账款 预收账款 负债类
202 其他应付款 其他应付款 负债类
表二:
KMBM YE
101 100000000
10101 66000000
10102 34000000
201 0
202 100000000
表三:
ID ID2 KMBM LRLC FSE
1 1 101 + 50000
1 2 10102 + 500000
2 1 202 - 3200000
2 2 10101 - 3200000
表三中(LRLC字段等于“+”表示流入,等于“-”等于流出)【1-1】
请根据上述三个数据表的字段和数据记录反映出的结果,按照个人理解标示出各表的主外键信息。并说明理由
【1-2】
请通过编写一条SQL语句查询出表一中的KMBM字段值对应的最新余额信息,以不用的明细KMBM为单位进行统计,统计的结果中要包含表一中的所有字段信息和计算的最新余额。(最新余额=历史资金金额+近期资金流入-近期资金流出)
【1-3】
根据下面的查询结果,编写一条SQL语句实现输出结果同下面的查询结果KMBM KMMC YE
101 银行存款 96850000
201 预收账款 50000
202 其他应付款 96800000

解决方案 »

  1.   

    1-1
    表一主键:KMBM
    表二主键:KMBM,同时是表一KMBM的外键
    表三主键:ID,ID21-2SQL> select * from table1;
     
          KMBM KMMC                 KMSX                 ZCLX
    ---------- -------------------- -------------------- --------------------
           101 银行存款             银行存款             资产类
         10101 北京存款             银行存款             资产类
         10102 上海存款             银行存款             资产类
           201 预收账款             预收账款             负债类
           202 其他应付款           其他应付款           负债类
     
    SQL> select * from table2;
     
          KMBM         YE
    ---------- ----------
           101  100000000
         10101   66000000
         10102   34000000
           201          0
           202  100000000
     
    SQL> select * from table3;
     
            ID        ID2       KMBM LRLC        FSE
    ---------- ---------- ---------- ---- ----------
             1          1        101 +         50000
             1          2      10102 +        500000
             2          1        202 -       3200000
             2          2      10101 -       3200000
     
    SQL> 
    SQL> select a.*,nvl(b.最新余额,0) 最新余额
      2  from table1 a,
      3  (
      4  select t1.KMBM,
      5  case LRLC when '+' then ye+fse
      6            when '-' then ye-fse
      7            else null
      8            end 最新余额
      9  from table2 t1 left join table3 t3
     10  on t1.kmbm=t3.kmbm
     11  ) b
     12  where a.kmbm=b.kmbm;
     
          KMBM KMMC                 KMSX                 ZCLX                  最新余额
    ---------- -------------------- -------------------- -------------------- ----------
           101 银行存款             银行存款             资产类                100050000
         10102 上海存款             银行存款             资产类                 34500000
           202 其他应付款           其他应付款           负债类                 96800000
         10101 北京存款             银行存款             资产类                 62800000
           201 预收账款             预收账款             负债类                        0
    1-3 
    看不出规律