科目余额表 GL_BALANCE

SELECT GP.PERIOD_NAME
      ,GP.PERIOD_YEAR
      ,GP.PERIOD_NUM
      ,GB.CODE_COMBINATION_ID
      ,GB.CURRENCY_CODE
      ,GC.SEGMENT1
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT1
                               ,1) SEGMENT1_DESC
      
      ,GC.SEGMENT2
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT2
                               ,2) SEGMENT2_DESC
      
      ,GC.SEGMENT3
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT3
                               ,3) SEGMENT3_DESC
      ,GC.SEGMENT4
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT4
                               ,4) SEGMENT4_DESC
      ,GC.SEGMENT5
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT5
                               ,5) SEGMENT5_DESC
      ,GC.SEGMENT6
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT6
                               ,6) SEGMENT6_DESC
      ,GC.SEGMENT7
      ,MEW_GET_ACCOUNT_DESC_FNC(GC.CHART_OF_ACCOUNTS_ID
                               ,GC.CODE_COMBINATION_ID
                               ,GC.SEGMENT7
                               ,7) SEGMENT7_DESC
      ,GB.BEGIN_BALANCE_DR - GB.BEGIN_BALANCE_CR BEGIN_BALANCE --期初余额 原币
      ,DECODE(GB.CURRENCY_CODE
             ,'CNY'
             ,GB.BEGIN_BALANCE_DR - GB.BEGIN_BALANCE_CR
             ,GB.BEGIN_BALANCE_DR_BEQ - GB.BEGIN_BALANCE_CR_BEQ) BEGIN_BALANCE_BEQ --期初余额 本币
      ,GB.PERIOD_NET_DR --本期借方发生额 原币
      ,GB.PERIOD_NET_DR_BEQ --本期借方发生额 本币      
      ,GB.PERIOD_NET_CR --本期贷方发生额 原币
      ,GB.PERIOD_NET_CR_BEQ --本期贷方发生额 本币
      ,(GB.BEGIN_BALANCE_DR - GB.BEGIN_BALANCE_CR + GB.PERIOD_NET_DR -
       GB.PERIOD_NET_CR) YTD_BALANCE --期末余额 原币
      
      ,(GB.BEGIN_BALANCE_DR_BEQ - GB.BEGIN_BALANCE_CR_BEQ +
       GB.PERIOD_NET_DR_BEQ - GB.PERIOD_NET_CR_BEQ) YTD_BALANCE_BEQ --期末余额 本币
  FROM GL_BALANCES              GB
      ,GL_CODE_COMBINATIONS_KFV GC
      ,GL_PERIOD_STATUSES_V     GP
 WHERE GB.ACTUAL_FLAG = 'A'
   AND GB.CODE_COMBINATION_ID = GC.CODE_COMBINATION_ID
   AND GB.PERIOD_NAME = GP.PERIOD_NAME
   AND GB.SET_OF_BOOKS_ID = GP.SET_OF_BOOKS_ID
   AND GP.APPLICATION_ID = 101
   AND GP.SET_OF_BOOKS_ID = 143
   AND GP.PERIOD_YEAR || '-' || LPAD(GP.PERIOD_NUM
                                    ,2
                                    ,'0') >= '2012-01'
   AND GP.PERIOD_YEAR || '-' || LPAD(GP.PERIOD_NUM
                                    ,2
                                    ,'0') <= '2012-03'

select distinct COUNT(*) as COUNT , ---笔数 ---ebankdzd.count, ebankdzd.curacc, org_orgs.name as curname, bd_defdoc.def2 as SSBK,----所属板块 ebankdzd.trans_date, '久悬账户'as JXZH, 'YQZL' as tablefalg, org_orgs.pk_org, org_orgs.name as orgsname from bd_bankaccbas bd_bankaccbas left join org_orgs on org_orgs.pk_org= bd_bankaccbas.pk_org left join bd_defdoc bd_defdoc on bd_defdoc.def1=bd_bankaccbas.pk_org and bd_defdoc.pk_defdoclist in (select pk_defdoclist from bd_defdoclist where bd_defdoclist.code ='SK04') left join (SELECT distinct ---COUNT(*) as COUNT , ---笔数 ebank_dzd.curacc,---本方账号 ---ebank_dzd.curname,---本方户名 substr( ebank_dzd.trans_date, 1, 7 ) as trans_date,---交易日期 max ( ebank_dzd.trans_date ) as last_trans_date,---交易日期 ---TRUNC(SYSDATE)-TRUNC(to_date(max ( ebank_dzd.trans_date ) , 'YYYY-MM-DD HH24:MI:SS')) as CE, CASE ---WHEN TRUNC(TO_DATE(parameter('cxsj'), 'YYYY-MM-DD HH24:MI:SS'))-TRUNC(to_date(max ( ebank_dzd.trans_date ), 'YYYY-MM-DD HH24:MI:SS')) > 90 THEN '未发生交易周期(天)>90' when TRUNC(SYSDATE)-TRUNC(to_date(max ( ebank_dzd.trans_date ), 'YYYY-MM-DD HH24:MI:SS')) > 90 THEN '未发生交易周期(天)>90' ELSE '未发生交易周期(天)<90' END AS WFSJYZQ, ---未发生交易周期 ROW_NUMBER() OVER ( PARTITION BY ebank_dzd.curacc ORDER BY TO_DATE(MAX(ebank_dzd.trans_date), 'YYYY-MM-DD HH24:MI:SS') DESC ) AS rn FROM ebank_dzd ebank_dzd left join org_orgs org_orgs on org_orgs.pk_org= ebank_dzd.pk_org WHERE (org_orgs.pk_org='0001Q7100000000021CL' or org_orgs.isbusinessunit ='Y') and org_orgs.dr=0 and ebank_dzd.dr=0 and ebank_dzd.trans_abstr not like '%结息%' ---and ebank_dzd.pk_org ='0001SW1000000000DI99' and ebank_dzd.curacc='121100500000012544' ---and substr( ebank_dzd.trans_date, 1, 7 )='2024-12' group by ebank_dzd.curacc,ebank_dzd.curname,substr( ebank_dzd.trans_date, 1, 7 ),ebank_dzd.cdflag) ebankdzd on ebankdzd.CURACC = bd_bankaccbas.accnum where (org_orgs.pk_org='0001Q7100000000021CL' or org_orgs.isbusinessunit ='Y') and (org_orgs.code <'1203' or org_orgs.code >'1216') and org_orgs.dr=0 and bd_bankaccbas.dr=0 and bd_bankaccbas.accclass !=0 and bd_bankaccbas.enablestate=2 and bd_bankaccbas.accstate=0 and bd_bankaccbas.accclass=2 ---and ebankdzd.WFSJYZQ='未发生交易周期(天)>90' and ebankdzd.rn=1 and TRUNC(SYSDATE)-TRUNC(to_date(ebankdzd.last_trans_date, 'YYYY-MM-DD HH24:MI:SS')) > 90 ---and TRUNC(TO_DATE(parameter('cxsj'), 'YYYY-MM-DD HH24:MI:SS')) -TRUNC(to_date(ebankdzd.last_trans_date, 'YYYY-MM-DD HH24:MI:SS')) > 90 group by ebankdzd.curacc, bd_defdoc.def2,----所属板块 ebankdzd.trans_date, org_orgs.pk_org, org_orgs.name union all -----------其余的取科目发生额 select distinct COUNT(*) as COUNT , ---笔数 gldetail.accnum as CURACC, gldetail.orgname as CURNAME, ---gldetail.accname as CURNAME, bd_defdoc.def2 as SSBK,----所属板块 max(gldetail.preparedMM) as TRANS_DATE,----制单日期 ---gldetail.preparedDD as cxsj,----查询日期 ---gldetail.DBZDJYJE, ---gldetail.JYBS, ---交易笔数 '久悬账户'as JXZH, gldetail.tablefalg, gldetail.pk_org, gldetail.orgname as orgsname from (select distinct ---COUNT(*) as COUNT , ---笔数 gl_detail.pk_accasoa, ---gl_detail.pk_accountingbook, gl_detail.pk_org, org_orgs.code orgcode, org_orgs.name orgname, ---gl_detail.yearv yearv, gl_docfree1.F11 pk_bankaccbas, bd_bankaccsub.accnum, bd_bankaccsub.accname, substr( gl_detail.prepareddatev, 1, 7 ) as preparedMM,----制单日期 max(substr( gl_detail.prepareddatev, 1, 10 )) as preparedDD,----制单日期 ---gl_detail.voucherkindv , ---凭证类型 CASE WHEN ---TRUNC(TO_DATE(parameter('cxsj'), 'YYYY-MM-DD HH24:MI:SS'))-TRUNC(to_date(max ( gl_detail.prepareddatev), 'YYYY-MM-DD HH24:MI:SS')) > 90 THEN '未发生交易周期(天)>90' TRUNC(SYSDATE)-TRUNC(to_date(max ( gl_detail.prepareddatev), 'YYYY-MM-DD HH24:MI:SS')) > 90 THEN '未发生交易周期(天)>90' ELSE '未发生交易周期(天)<90' END AS WFSJYZQ, ---未发生交易周期 'detail' tablefalg, -- 窗口函数:按pk_accasoa分组,按日期倒序排名 ROW_NUMBER() OVER ( PARTITION BY gl_detail.pk_accasoa ORDER BY TO_DATE(MAX(gl_detail.prepareddatev), 'YYYY-MM-DD HH24:MI:SS') DESC ) AS rn from gl_detail gl_detail left join org_orgs org_orgs on org_orgs.pk_org= gl_detail.pk_org left join gl_docfree1 gl_docfree1 on gl_detail.assid = gl_docfree1.assid left join bd_accasoa bd_accasoa on bd_accasoa.pk_accasoa = gl_detail.pk_accasoa and bd_accasoa.dr = 0 ---会计科目 left join bd_account bd_account on bd_account.pk_account = bd_accasoa.pk_account and bd_account.dr = 0 --会计科目基本信息 left join bd_bankaccsub bd_bankaccsub on bd_bankaccsub.pk_bankaccsub=gl_docfree1.F11 and bd_bankaccsub.fronzenstate=0---银行账户子户 left join bd_bankaccbas bd_bankaccbas on bd_bankaccsub.pk_bankaccbas=bd_bankaccbas.pk_bankaccbas and bd_bankaccbas.accstate=0---银行账户子户 where bd_account.code like ('1002%') ---and gl_detail.yearv =TO_CHAR(TRUNC(SYSDATE), 'YYYY') and gl_detail.adjustperiod >= '00' and gl_detail.adjustperiod <= '12' and gl_detail.discardflagv <> 'Y' ---作废标志 AND gl_detail.tempsaveflag <> 'Y' ---暂存标志 and gl_detail.dr = 0 and gl_detail.voucherkindv !=2 and gl_detail.explanation not like '%结息%' ----摘要 --and gl_detail.voucherkindv <> 255 ---and gl_detail.pk_managerv = 'N/A' -- and gl_detail.voucherkindv <> 5 and gl_docfree1.F11 <> 'NN/A' and 1 = 1 and bd_bankaccsub.pk_bankaccbas not in (select ebank_balance.pk_bankaccbas---银行账户主户pk from ebank_balance ebank_balance ----银行账户余额 WHERE ebank_balance.dr=0 ) and (org_orgs.code <'1203' or org_orgs.code >'1216') ---and gl_detail.pk_org ='0001SW1000000000DI99' ---and substr( gl_detail.prepareddatev, 1, 7 )='2024-12' and bd_bankaccbas.accstate=0 and bd_bankaccbas.enablestate=2 group by gl_detail.pk_accasoa, gl_detail.pk_org, org_orgs.code, org_orgs.name, ---gl_detail.pk_accountingbook, ---gl_detail.yearv, gl_docfree1.F11, bd_bankaccsub.accnum, bd_bankaccsub.accname, ---gl_detail.debitamount, ---gl_detail.creditamount, ---gl_detail.voucherkindv, ---gl_detail.prepareddatev substr(gl_detail.prepareddatev, 1, 7) ) gldetail left join bd_defdoc bd_defdoc on bd_defdoc.def1=gldetail.pk_org and bd_defdoc.pk_defdoclist in (select pk_defdoclist from bd_defdoclist where bd_defdoclist.code ='SK04') where ---TRUNC(TO_DATE(parameter('cxsj'), 'YYYY-MM-DD HH24:MI:SS')) -TRUNC(to_date(gldetail.preparedDD, 'YYYY-MM-DD HH24:MI:SS')) > 90 TRUNC(SYSDATE)-TRUNC(to_date(gldetail.preparedDD, 'YYYY-MM-DD HH24:MI:SS')) > 90 ---and gldetail.pk_org ='0001SW1000000000DI99' and gldetail.rn=1 group by ----gldetail.COUNT , ---笔数 gldetail.accnum, gldetail.accname, bd_defdoc.def2,----所属板块 gldetail.preparedMM,----制单日期 gldetail.tablefalg, gldetail.pk_org, gldetail.orgname 现在这个语句里存在银行账户所属组织的条件分别在银行和总账的里进行过滤 现在想去掉这个条件
最新发布
07-12
<think>我们正在处理一个关于用友NC933系统中查询科目余额的SQL语句或查询方法的问题。用户希望获得具体的SQL示例或方法。根据提供的引用内容,我们有一些关于在NC二次开发中执行SQL的通用方法,但没有直接给出科目余额的SQL查询语句。不过,我们可以根据用友NC系统的数据库结构特点,给出一个典型的科目余额查询的SQL示例。注意,实际名和字段名可能因版本和具体实施而有所不同,但通常科目余额相关的会包含“gl_balance”或类似字样。在NC系统中,科目余额通常存储在总账模块相关的中,例如`gl_balance`(余额)、`gl_balance_xxx`(可能是按年度分)等。同时,需要关联科目(如`bd_accsubj`)等。由于用户使用的是NC933版本,我们假设其数据库结构与其他NC版本类似。以下是一个可能的查询科目余额的SQL语句示例:假设我们需要查询某个会计期间(如2023年1月)的科目余额,包括科目编码、科目名称、期初余额、本期借方发生额、本期贷方发生额、期末余额等。注意:实际结构可能有所不同,以下仅为示例:```sqlSELECTb.accsubj_codeAS科目编码,b.accsubj_nameAS科目名称,a.beg_debit_balAS期初借方余额,a.beg_credit_balAS期初贷方余额,a.debit_occurAS本期借方发生额,a.credit_occurAS本期贷方发生额,a.end_debit_balAS期末借方余额,a.end_credit_balAS期末贷方余额FROMgl_balancea--科目余额INNERJOINbd_accsubjbONa.pk_accsubj=b.pk_accsubj--关联科目WHEREa.year=2023--年度ANDa.period=1--期间(月份)--可能还需要指定账簿(公司)等条件,例如:ANDa.pk_org='公司主键'```但是,请注意:1.实际名和字段名可能有所不同,例如余额可能按年度分,如`gl_balance_2023`。2.余额可能包含多个账簿(公司)的数据,因此需要指定账簿主键(`pk_org`)或账簿编码。3.期初余额可能分为借方和贷方,期末余额同理。由于NC系统的复杂性,建议通过以下方式获取准确的SQL:-查看NC的数据库设计文档。-通过数据库管理工具查看结构(如查看以`gl_`开头的,特别是余额)。-在NC的“动态建模平台”->“数据模型管理”中查看相关元数据。另外,根据引用[1]中提供的代码示例,我们可以在NC二次开发中执行SQL查询。例如,使用`IUAPQueryBS`服务执行查询:```javaimportnc.bs.framework.common.NCLocator;importnc.itf.uap.IUAPQueryBS;importnc.jdbc.framework.SQLParameter;importnc.jdbc.framework.processor.ColumnListProcessor;//...其他导入IUAPQueryBSbs=NCLocator.getInstance().lookup(IUAPQueryBS.class);SQLParameterparams=newSQLParameter();StringBuildersb=newStringBuilder();sb.append("SELECTaccsubj_code,accsubj_name,beg_debit_bal,beg_credit_bal,debit_occur,credit_occur,end_debit_bal,end_credit_bal");sb.append("FROMgl_balancea");sb.append("INNERJOINbd_accsubjbONa.pk_accsubj=b.pk_accsubj");sb.append("WHEREa.year=?ANDa.period=?ANDa.pk_org=?");params.addParam(2023);//年度params.addParam(1);//期间params.addParam("公司主键");//账簿主键List<Object[]>list=(List<Object[]>)bs.executeQuery(sb.toString(),params,newColumnListProcessor());//然后遍历list处理每一行数据```注意:上述代码中的名和字段名需要根据实际情况调整。如果用户没有二次开发环境,而是想直接查询数据库,那么可以直接使用SQL语句在数据库客户端中执行。最后,由于不同企业的NC系统实施可能有个性化调整,以上示例仅供参考,建议在测试环境中验证后再使用。§§相关问题§§1.如何查看用友NC系统的数据库结构?2.在NC二次开发中执行SQL查询有哪些注意事项?3.科目余额在NC系统中是如何存储的?是否有分策略?</think>### 用友NC933科目余额查询方法 在NC933系统中查询科目余额主要有两种方式: #### 1. 通过NC内置工具查询(推荐) 在NC前端界面: ```sql 路径:财务会计 → 总账 → 账簿查询 → 科目余额 ``` 在查询界面设置参数: - 会计期间 - 科目级次 - 账簿/核算账簿 - 科目类型 - 余额方向(借方/贷方/零余额) 系统会自动生成SQL并返回结果,无需手动编写SQL[^2]。 #### 2. 通过数据库直接查询(需数据库权限) 科目余额数据通常存储在以下核心中: ```sql SELECT a.pk_accsubj AS 科目主键, b.accsubj_code AS 科目编码, b.accsubj_name AS 科目名称, a.debit_bal AS 借方余额, a.credit_bal AS 贷方余额, a.year AS 年度, a.period AS 期间 FROM gl_balance a -- 科目余额 JOIN bd_accsubj b ON a.pk_accsubj = b.pk_accsubj -- 科目 WHERE a.pk_org = '公司主键' -- 指定核算单位 AND a.year = 2023 -- 指定年度 AND a.period = 6 -- 指定期间 ORDER BY b.accsubj_code; ``` #### 关键说明: | 名 | 描述 | 关键字段 | |--------------|----------------------|-----------------------------| | `gl_balance` | 科目余额 | pk_accsubj, debit_bal, credit_bal | | `bd_accsubj` | 科目基础信息 | pk_accsubj, accsubj_code, accsubj_name | | `org_orgs` | 组织单位 | pk_org, org_code, org_name | > **注意**: > 1. 实际名可能因客户化配置不同(如`gl_balance_2023`分) > 2. 务必关联`bd_accsubj`获取科目名称 > 3. 不同账簿需通过`pk_org`区分核算单位 #### NC二次开发示例(Java): ```java // 获取查询服务 IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); SQLParameter params = new SQLParameter(); StringBuilder sql = new StringBuilder() .append("SELECT b.accsubj_code, b.accsubj_name, a.debit_bal, a.credit_bal ") .append("FROM gl_balance a ") .append("JOIN bd_accsubj b ON a.pk_accsubj = b.pk_accsubj ") .append("WHERE a.pk_org = ? AND a.year = ? AND a.period = ?"); params.addParam("1001A210000000000FLW"); // 公司主键 params.addParam(2023); // 年度 params.addParam(6); // 期间 // 执行查询 List<Object[]> result = (List<Object[]>) queryBS.executeQuery(sql.toString(), params, new ColumnListProcessor()); ``` [^1]: 直接执行SQL需谨慎,建议通过NC标准接口访问数据 [^2]: 前端查询工具会自动校验SQL有效性并处理分逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值