数据源:
NC65 企业报表 带有浮动行的企业报表
后台 NC 数据表:
指标明细表:IUFO_MEASURE_DATA_X(一张企业报表可能包含多张指标明细表,具
体根据指标提取上的 fromtable 确定)
关键字明细表:IUFO_MEASPUB_X(一张企业报表可能包含多张关键字明细表,具
体根据合并方案的关键字组合以及表列引用的关键字确定)
关键字维度表: iufo_keydetail_x()
关键字组合表: iufo_key_comb (包含所有报表关键字组合)
关键字表:iufo_keyword(包含关键字和对应的关键字维度表)
合并方案:iufo_hbscheme(包含合并方案名称以及数据版本号)
*带有浮动行的企业报表指标可能包含自定义档案引用,关键字引用,计算指标
等。
编写 SQL 脚本步骤:
1. 点击数据-指标管理找到后台对应的表和列名 IUFO_MEASURE_DATA_X
2. 查 询 这 张 企 业 报 表 对 应 的 多 张 IUFO_MEASURE_DATA_X 出 所 对 应 的
IUFO_MEASPUB_X。
*IUFO_MEASURE_DATA_X 与 IUFO_MEASPUB_X 中 X 部分字符串不一样。
a. 查询本 NC 系统所有 IUFO_MEASPUB_X,并用 union all 联合查询。
Select distinct 'select alone_id,'''||table_name ||'''
Tablename from '||table_name ||' union all'
from all_tables
where table_name like 'IUFO_MEASPUB_%' and num_rows >0;
样例查询结果:
b.将上述结果拼接在一起
代码格式:
select
Distinct 'BA_IUFO_MEASURE_DATA_X', b.tablename
alone_id,'IUFO_MEASPUB_RYYO'
as
tablename
from
from BA_IUFO_MEASURE_DATA_X a
left join
(
--粘贴上面一个 union all 的拼接语句,去掉最后一个 union all
)
b on a.alone_id =b.alone_id
where b.alone_id is not null;
样例格式:
select distinct 'BA_IUFO_MEASURE_DATA_5KYM8NG3',b.tablename from
BA_IUFO_MEASURE_DATA_5KYM8NG3 a
left join
(select
IUFO_MEASPUB_RYYO@ba_dblink_gl union all
select
IUFO_MEASPUB_RYY8@ba_dblink_gl union all
select
IUFO_MEASPUB_RYY5@ba_dblink_gl union all
select alone_id,'IUFO_MEASPUB_RYY4' from
select
IUFO_MEASPUB_0NV1@ba_dblink_gl union all
select
IUFO_MEASPUB_0MIE@ba_dblink_gl union all
select
IUFO_MEASPUB_0MIC@ba_dblink_gl union all
select
IUFO_MEASPUB_0MIB@ba_dblink_gl
)
b on a.alone_id =b.alone_id
where b.alone_id is not
alone_id,'IUFO_MEASPUB_0NV1'
alone_id,'IUFO_MEASPUB_0MIE'
alone_id,'IUFO_MEASPUB_0MIC'
alone_id,'IUFO_MEASPUB_0MIB'
alone_id,'IUFO_MEASPUB_RYY8'
alone_id,'IUFO_MEASPUB_RYY5'
from
from
from
from
from
from
null;
样例查询结果:
3. 查询找到 IUFO_MEASURE_DATA_X 对应的关键字组合。
代码格式:
select name from IUFO_KEY_COMB
where SUBSTR(UPPER(PK_KEY_COMB),17,4)
= SUBSTR('IUFO_MEASPUB_X',14,4);
代码样例:
select name from IUFO_KEY_COMB
where SUBSTR(UPPER(PK_KEY_COMB),17,4)
= SUBSTR('IUFO_MEASPUB_F9KL',14,4);
样例查询关键字组合结果:单位,对方单位编码,会计月,序号,被投资单位名称,
企业性质,经营状况
*UFO_MEASPUB_X 表名中 X 部分,对应 IUFO_KEY_COMB 中的 PK_KEY_COMB 后四位
字符串。
如果一张企业报表对应多张 UFO_MEASPUB_X 后台表,对应的关键字明细表也是多
张。
4. 查询每个关键字所对应的维度表。
代码格式:
select name,detailtable from iufo_keyword
where name in ('关键字组合');
代码案例:
select name,detailtable from iufo_keyword@ba_dblink_gl
where name
in ('单位','对方单位编码','会计月','序号','被投资单位名称','企业性
质','经营状况');
样例查询关键字组合结果:
5. 查询出企业报表的每条记录对应的合并方案。
在最后脚本关联查询下 iufo_hbscheme 即可。
6. 查询出指标引用的自定义档案。
找出所有包含引用自定义档案的指标:
样例:担保方式','担保类型','反担保方式','被担保方贷款银行','是否逾期
','是否被诉','是否按股权比例担保','内外担保'
代码格式:
select b.code,b.name,a.code,a.name,a.pk_defdoc
from bd_defdoc a
left join bd_defdoclist b
on a.pk_defdoclist = b.pk_defdoclist
where b.name in (‘引用的自定义档案名称’);
样例格式:
select b.code,b.name,a.code,a.name,a.pk_defdoc
from bd_defdoc@ba_dblink_gl a
left join bd_defdoclist@ba_dblink_gl b
on a.pk_defdoclist = b.pk_defdoclist
where b.name in ('担保方式','担保类型','反担保方式','被担保方贷款银
行','是否逾期','是否被诉','是否按股权比例担保','内外担保')
*查询出结果直接关联主表就行。
7. 拼接并联合查询这张所有结果集。
代码格式:
--一个 IUFO_MEASURE_DATA_X 对应一个查询 sql 脚本
select
报表指标(计算指标),
报表指标(自定义档案指标),
报表指标(关键字指标),
b.ver, --合并方案版本号
(case when b.ver =0 then '个别报表' else q.name end) --合并方案
版本名称
from IUFO_MEASURE_DATA_X a
left join IUFO_MEASPUB_X b on a.alone_id =b.alone_id
left join iufo_keydetail_X c on b.keyword1 =c.keyval and c.dr =0
--对应多个关键字维度表
left join
(
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
a
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('自定义档案名称')
) f on a.my4ncy9 =f.code--对应自定义档案名称
left join iufo_hbscheme q on b.ver =q.version
where a.dr =0;
样例代码:
/*
报表:提供担保情况
浮动指标表:IUFO_MEASURE_DATA_5KYM8NG3
关键字指标表(包含浮动行关键字引用):IUFO_MEASPUB_F9KL
指标维度表: iufo_keydetail_unit,iufo_keydetail_6785
*/
select
a.m10004,--资产负债率
a.my4ncy9,--担保方式
f.name as dbfs_name,--担保方式名称
a.md527lt,--担保类型
g.name as dblx_name ,--担保类型名称
a.mchjxe6,--反担保方式
h.name as fdbfs_name,--反担保方式名称
a.m10000,--担保品评估值
a.m1ynnm9,--被担保方贷款银行
i.name as bdbfyh_name, --被担保方贷款银行名称
a.m10012,--实际担保金额
a.m10011,--本年新增担保金额
a.mec2vjk,--是否逾期
j.name as sfqy_name, --是否逾期名称
a.mx4lga4,--是否被诉
k.name as sfyq_name,--是否被诉名称
a.mwgw4d3,--是否按股权比例担保
l.name as sfgqbldb_name,--是否按股权比例担保名称
a.muwjdiz,--担保起始时间
a.mr2rvqn,--担保终止时间
a.mva6jkg,--内外担保
m.name as nwdb_name,--内外担保名称
a.mxbdg0f,--备注
--a.keyword1,--单位 PK
--c.code as keyword1_name, --单位编码
c.name1 as keyword1_name,--单位名称
--keyword2,--对方单位 pk
--d.code as keyword2_code,--对方单位编码
d.name1 as keyword2_name ,--对方单位名称
b.keyword3,--会计月
b.keyword4,--序号
b.keyword5,--被投资单位名称
--b.keyword6 ,--企业性质 pk
--e.code as keyword6_code,--企业性质编码
e.name1 as keyword6_name,--企业性质名称
b.keyword7, --经营状况
b.ver, --合并方案版本号
(case when b.ver =0 then '个别报表' else q.name end) --合并方案
版本名称
from IUFO_MEASURE_DATA_5KYM8NG3@ba_dblink_gl a
left
b
join
=b.alone_id
left join iufo_keydetail_unit@ba_dblink_gl c
=c.keyval and c.dr =0--单位
left join iufo_keydetail_unit@ba_dblink_gl d
=d.keyval and d.dr =0--对方单位编码
left join iufo_keydetail_6785@ba_dblink_gl e
=e.keyval --企业性质
left join
(
IUFO_MEASPUB_F9KL@ba_dblink_gl
on b.keyword1
on
a.alone_id
on b.keyword2
on b.keyword2
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('担保方式')
) f on a.my4ncy9 =f.code--担保方式
left join
(
b.pk_defdoclist
where b.name in ('担保类型')
) g on a.md527lt =g.code--担保类型
left join
(
a
a
a
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('反担保方式')
) h on a.mchjxe6 =h.code--反担保方式
left join
(
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('被担保方贷款银行')
) i on a.m1ynnm9 =i.code--被担保方贷款银行
left join
(
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
a
a
a
a
a
b.pk_defdoclist
where b.name in ('是否逾期')
) j on a.mec2vjk =j.code--是否逾期
left join
(
b.pk_defdoclist
where b.name in ('是否被诉')
) k on a.mx4lga4 =k.code--是否被诉
left join
(
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('是否按股权比例担保')
) l on a.mwgw4d3 =l.code--是否按股权比例担保
left join
(
select a.code,a.name,a.pk_defdoc from bd_defdoc@ba_dblink_gl
left join bd_defdoclist@ba_dblink_gl b on a.pk_defdoclist =
b.pk_defdoclist
where b.name in ('内外担保')
) m on a.mva6jkg =m.code--内外担保
left join iufo_hbscheme@ba_dblink_gl q on b.ver =q.version
where a.dr =0;
--合计行指标
select
mvk1t2x,--合计担保品评估值
mkx6dh4,--合计实际担保金额