科目余额表SQL取数方法详解原创
69人赞赏了该文章
2,924次浏览
编辑于2024年03月18日 16:23:58
当需要展示具体的核算维度时,首先需要知道该维度对应的取数表表名及相关关键字段名,本文分别以基础资料供应商和辅助资料国家为列,查询方式如下:
--查询基础资料核算维度对应的表名,列标识(字段名)及主键字段名 SELECT P.FID,PL.FNAME,P.FFLEXNUMBER,P.FVALUESOURCE FFORMID,C.FTABLENAME,C.FPKFIELDNAME FROM T_BD_FLEXITEMPROPERTY P JOIN T_META_LOOKUPCLASS C ON C.FFORMID=P.FVALUESOURCE LEFT JOIN T_BD_FLEXITEMPROPERTY_L PL ON PL.FID=P.FID AND PL.FLOCALEID=2052 WHERE FNAME='供应商' AND P.FVALUETYPE='0' --0表示基础资料
--辅助资料核算维度全部保存在同一个表中,查询方式如下: SELECT P.FID,PL.FNAME,P.FFLEXNUMBER,P.FVALUESOURCE FFORMID,'T_BAS_ASSISTANTDATAENTRY' FTABLENAME, 'FENTRYID' FPKFIELDNAME FROM T_BD_FLEXITEMPROPERTY P LEFT JOIN T_BD_FLEXITEMPROPERTY_L PL ON PL.FID=P.FID AND PL.FLOCALEID=2052 WHERE P.FVALUETYPE='1' --1表示辅助资料
科目余额表中数据可以直接从T_GL_BALANCE表中查询到,具体SQL如下:
--科目余额表取数,包含核算维度 SELECT AB.FNUMBER 账簿编码,ABL.FNAME 账簿名称,B.FYEAR 年,B.FPERIOD 期,A.FNUMBER 科目编码,AL.FNAME 科目名称, CL.FNAME 币别,S.FNUMBER 供应商编码,SL.FNAME 供应商名称, B.FBEGINBALANCEFOR 期初原币,B.FBEGINBALANCE 期初本位币, B.FDEBITFOR 借方原币,B.FDEBIT 借方本位币, B.FCREDITFOR 贷方原币,B.FCREDIT 贷方本位币, B.FYTDDEBITFOR 本年累计借方原币,B.FYTDDEBIT 本年累计借方本位币, B.FYTDCREDITFOR 本年累计贷方原币,B.FYTDCREDIT 本年累计贷方本位币, B.FENDBALANCEFOR 期末原币,B.FENDBALANCE 期末本位币 FROM T_GL_BALANCE B JOIN T_BD_ACCOUNTBOOK AB ON AB.FBOOKID=B.FACCOUNTBOOKID LEFT JOIN T_BD_ACCOUNTBOOK_L ABL ON ABL.FBOOKID=B.FACCOUNTBOOKID AND ABL.FLOCALEID=2052 JOIN T_BD_ACCOUNT A ON A.FACCTID=B.FACCOUNTID LEFT JOIN T_BD_ACCOUNT_L AL ON AL.FACCTID=B.FACCOUNTID AND AL.FLOCALEID=2052 JOIN T_BD_CURRENCY C ON C.FCURRENCYID=B.FCURRENCYID LEFT JOIN T_BD_CURRENCY_L CL ON CL.FCURRENCYID=B.FCURRENCYID AND CL.FLOCALEID=2052 JOIN T_BD_FLEXITEMDETAILV DV ON DV.FID=B.FDETAILID --核算维度组合ID JOIN T_BD_SUPPLIER S ON S.FSUPPLIERID=DV.FFLEX4 --供应商维度,注意关联用到的表名及两边的关联字段 LEFT JOIN T_BD_SUPPLIER_L SL ON SL.FSUPPLIERID=S.FSUPPLIERID AND SL.FLOCALEID=2052 WHERE AB.FNUMBER='102' AND A.FNUMBER='2202.02' AND CL.FNAME='人民币' ORDER BY AB.FNUMBER,A.FNUMBER,CL.FNAME
辅助资料的查询也类似,主要关联方法如下:
JOIN T_BAS_ASSISTANTDATAENTRY AD ON AD.FENTRYID=DV.FF100015 --国家维度对应的标识列 LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L ADL ON ADL.FENTRYID=AD.FENTRYID AND ADL.FLOCALEID=2052
通常情况下,用户的需求可能会有更多要求,如
1,查询的账簿有调整期,且希望查询出带调整期数据的余额,那么就应该从调整期余额表中取数,具体方法是把上面脚本中的T_GL_BALANCE表替换成T_GL_BALANCEADJUST
2,查询同时满足多个核算维度的的数据,可以现金关联一个维度相关的表,如客户,可以加上后两行:
JOIN T_BD_FLEXITEMDETAILV DV ON DV.FID=B.FDETAILID --核算维度组合ID JOIN T_BD_SUPPLIER S ON S.FSUPPLIERID=DV.FFLEX4 --供应商维度 LEFT JOIN T_BD_SUPPLIER_L SL ON SL.FSUPPLIERID=S.FSUPPLIERID AND SL.FLOCALEID=2052 JOIN T_BD_CUSTOMER T ON T.FCUSTID=DV.FFLEX6 --客户维度 LEFT JOIN T_BD_CUSTOMER_L TL ON TL.FCUSTID=T.FCUSTID AND TL.FLOCALEID=2052
查询结果如下图:
3,由于余额表中保存的是已过账凭证的余额数据,如果想包含未过账凭证的余额数据,就必须先进行虚拟过账,得到过账后的临时余额表,然后用这个临时余额表替换上面SQL中的余额表。关于虚拟过账的方法,请参考我的另两篇文章:
4,如果你对核算维度组合ID(FDETAILID)字段的解析感兴趣,还可以参考以下文章:
赞 69
69人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读