高分帮忙写SQL语句
业务:
1个供地项目的出让约定有多期、实际支付也是多期的
GD_GUID行政区代码出让金额(万)
33010010000
支付约定情况
ZFYD_GUIDGD_GUID期号约定支付时间金额(万)
12008-12-13000
22009-5-12000
32010-2-15000
实际支付:
ZFSJ_GUIDGD_GUID期号约定支付时间金额(万)
12008-12-303000
22009-9-12000
现在要列出 到当前时间点 出让金欠缴情况列表
字段如下:项目名称,出让金额,欠缴金额,约定支付期号,约定支付时间,约定支付金额,
欠缴金额= (到当前时间点约定的金额-到当前时间点实际支付的金额)
约定支付期号、约定支付时间 未 最近一次 未按约定缴纳 期号和约定支付时间。
如 到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)
[解决办法]
提供建表语句和插入数据脚本
[解决办法]
记事本写得 ,没测试
- SQL code
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 cwhere a.GD_GUID =b.GD_GUID and a.GD_GUID =c.GD_GUID and b.YD_SJ<sysdate and c.SJ_SJ <sysdategroup by a.XM_MC,a.CR_JE
[解决办法]
参考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
[解决办法]
