业务:1个供地项目的出让约定有多期、实际支付也是多期的GD_GUID 行政区代码 出让金额(万)
330100 10000
支付约定情况ZFYD_GUID GD_GUID 期号 约定支付时间 金额(万)
1 2008-12-1 3000
2 2009-5-1 2000
3 2010-2-1 5000实际支付:ZFSJ_GUID GD_GUID 期号 约定支付时间 金额(万)
1 2008-12-30 3000
2 2009-9-1 2000现在要列出 到当前时间点 出让金欠缴情况列表字段如下:项目名称,出让金额,欠缴金额,约定支付期号,约定支付时间,约定支付金额, 欠缴金额= (到当前时间点约定的金额-到当前时间点实际支付的金额)
约定支付期号、约定支付时间 未 最近一次 未按约定缴纳 期号和约定支付时间。如 到4月30号 则项目项目名称、10000万,5000万,3,2010-2-1由于数据量比较大,采用怎么方式才能性能更好的,请大家帮忙一下的。
相关的表结构:----------------------------------------------
1.1 供地项目(T_GDXM)
代码 名称 数据类型 注释
GD_GUID 供地标识 VARCHAR(50)
XZQ_DM 行政区代码 VARCHAR(6)
XM_MC 项目名称 VARCHAR(150)
CR_JE 出让金额 NUMBER(10,4) ---------------------------------------------
1.2 出让金支付约定(T_CRJ_ZFYD)代码 名称 数据类型 注释
ZFYD_GUID 支付约定标识 VARCHAR(50)
GD_GUID 供地标识 VARCHAR(50)
YD_QH 约定支付期号 INT
YD_SJ 约定支付时间 DATE
YD_JE 约定支付金额 NUMBER(10,4) --------------------------------------------
1.3 出让金实际支付(T_CRJ_ZFSJ)代码 名称 数据类型 注释
ZFSJ_GUID 实际支付标识 VARCHAR(50)
GD_GUID 供地标识 VARCHAR(50)
SJ_QH 支付期号 INT
SJ_SJ 支付时间 DATE
SJ_JE 支付金额 NUMBER(10,4)

解决方案 »

  1.   

    记事本写得 ,没测试
    select a.XM_MC as 项目名称,a.CR_JE as 出让金额 ,
    sum(nvl(b.YD_JE,0)) - sum(nvl(c.SJ_JE,0)) as 欠缴金额,
    max(b.YD_QH) as 约定支付期号,
    max(b.YD_SJ) as 约定支付时间
    from T_GDXM a , T_CRJ_ZFYD b ,T_CRJ_ZFSJ c
    where a.GD_GUID =b.GD_GUID and a.GD_GUID =c.GD_GUID 
    and b.YD_SJ<sysdate and c.SJ_SJ <sysdate
    group by a.XM_MC,a.CR_JE
      

  2.   

    参考sql:
    select a.XM_MC as 项目名称,a.CR_JE as 出让金额 ,
    sum(nvl(b.YD_JE,0)) - sum(nvl(c.SJ_JE,0)) as 欠缴金额,
    max(b.YD_QH) as 约定支付期号,
    max(b.YD_SJ) as 约定支付时间
    from T_GDXM a left join T_CRJ_ZFYD b on a.GD_GUID =b.GD_GUID  and b.YD_SJ<sysdate
    left join T_CRJ_ZFSJ c on a.GD_GUID =c.GD_GUID and c.SJ_SJ <sysdate
    group by a.XM_MC,a.CR_JE