合并报表项目取数说明:
合并报表为了节省磁盘空间,服务端对项目数据存储采用了横表的方式,取数上有些复杂,特说明和示例如下:
比如要取2006年8月份、月报、币别编码为“001”的人民币、公司编码为“C01”的个别表资产负债表中,编码为“1001”的项目的本期发生数。
首先查找T_Csl_ItemFieldMapped
select a.FTableName,a.FFieldname from T_Csl_ItemFieldMapped a,T_Csl_RptItem b where a.FItemID=b.FID
and b.Fnumber='1001'
其中a.FTableName是编码为“1001”的项目的数据所在的表名(比如为T_Csl_ItemDataEntry001),a.FFieldname是字段名(比如为F1),a.FTableName所得的表是程序动态生成的,目前是一个表300个字段,当有301个项目时就会有两个表,601个项目时就有三个表,依此类推,表名分别为:T_Csl_ItemDataEntry001、T_Csl_ItemDataEntry002、T_Csl_ItemDataEntry003等等。
查询项目数据的Sql如下:
Select sum(D1.F1) From T_Csl_ItemData H,T_Csl_ItemDataEntry D,T_Csl_ItemDataEntry001 D1,T_Org_BaseUnit Company,T_Bd_Currency Cy
where H.FID=D.FItemDataID and D.FID=D1.FID and H.FCompanyID=company.Fid and H.FCurrencyID=Cy.Fid
and Company.FNumber='001' --公司
and Cy.FNumber='C01' --币别
and H.FPeriodType=3 --月报
and H.FDataSource=1 --个别报表
and H.FCommitStatus=3 --已经集团确认的
and D.FDataElement=2 --本期发生数
and D.FValueType=1 --金额
and D.FYear=2006 --2006年
and D.FPeriod=8 --8月
合并报表为了节省磁盘空间,服务端对项目数据存储采用了横表的方式,取数上有些复杂,特说明和示例如下:
比如要取2006年8月份、月报、币别编码为“001”的人民币、公司编码为“C01”的个别表资产负债表中,编码为“1001”的项目的本期发生数。
首先查找T_Csl_ItemFieldMapped
select a.FTableName,a.FFieldname from T_Csl_ItemFieldMapped a,T_Csl_RptItem b where a.FItemID=b.FID
and b.Fnumber='1001'
其中a.FTableName是编码为“1001”的项目的数据所在的表名(比如为T_Csl_ItemDataEntry001),a.FFieldname是字段名(比如为F1),a.FTableName所得的表是程序动态生成的,目前是一个表300个字段,当有301个项目时就会有两个表,601个项目时就有三个表,依此类推,表名分别为:T_Csl_ItemDataEntry001、T_Csl_ItemDataEntry002、T_Csl_ItemDataEntry003等等。
查询项目数据的Sql如下:
Select sum(D1.F1) From T_Csl_ItemData H,T_Csl_ItemDataEntry D,T_Csl_ItemDataEntry001 D1,T_Org_BaseUnit Company,T_Bd_Currency Cy
where H.FID=D.FItemDataID and D.FID=D1.FID and H.FCompanyID=company.Fid and H.FCurrencyID=Cy.Fid
and Company.FNumber='001' --公司
and Cy.FNumber='C01' --币别
and H.FPeriodType=3 --月报
and H.FDataSource=1 --个别报表
and H.FCommitStatus=3 --已经集团确认的
and D.FDataElement=2 --本期发生数
and D.FValueType=1 --金额
and D.FYear=2006 --2006年
and D.FPeriod=8 --8月