- 记录科目余额表包含未过账凭证sql
- 以
1122
为例,不同科目核算维度不同
select
FYEAR '年',FPERIOD '期间',
account.FNUMBER '科目编码',account_l.FFULLNAME '科目名称',
cst.FNUMBER '客户编码',cst_l.FNAME '客户名称',
org.FNUMBER '组织编码',org_l.FNAME '组织名称',
sum(FDEBIT) '借方金额',sum(FCREDIT) '贷方金额',
sum(FYTDDEBIT) '年借方金额',sum(FYTDCREDIT) '年贷方金额',
case when sum(FENDBALANCE) > 0 then sum(FENDBALANCE) else 0 end '期末借方',
case when sum(FENDBALANCE) < 0 then -1*sum(FENDBALANCE) else 0 end '期末贷方'
from (
select
FYEAR,FPERIOD,FDETAILID,FACCOUNTID,
FDEBIT,FCREDIT,
FYTDDEBIT,FYTDCREDIT,
FENDBALANCEFOR,FENDBALANCE
from T_GL_BALANCE
where FCURRENCYID = 0
and FYEARPERIOD = 202402
and FYEARPERIOD = 202402
and FACCOUNTBOOKID = 1234567
union all
select
FYEAR,FPERIOD,FDETAILID,FACCOUNTID,
t2.FDEBIT,t2.FCREDIT,
t2.FDEBIT FYTDDEBIT,t2.FCREDIT FYTDCREDIT,
t2.FDEBIT-t2.FCREDIT FENDBALANCEFOR,t2.FDEBIT-t2.FCREDIT FENDBALANCE
from T_GL_VOUCHER t1
join T_GL_VOUCHERENTRY t2 on t1.FVOUCHERID = t2.FVOUCHERID
where t1.FDOCUMENTSTATUS <> 'Z'
and FYEAR = 2024 and FPERIOD = 02
and FACCOUNTBOOKID = 1234567
and FPOSTED = 0
and FISADJUSTVOUCHER = 0
) balance
join T_BD_ACCOUNT account on account.FACCTID = balance.FACCOUNTID
join T_BD_ACCOUNT_L account_l on account.FACCTID = account_l.FACCTID
left join T_BD_FLEXITEMDETAILV flex on balance.FDETAILID = flex.FID
left join T_BD_CUSTOMER cst on flex.FFLEX6 = cst.FCUSTID
left join T_BD_CUSTOMER_L cst_l on cst.FCUSTID = cst_l.FCUSTID and cst_l.FLOCALEID = 2052
join T_ORG_ORGANIZATIONS org on flex.FFLEX11 = org.FORGID
join T_ORG_ORGANIZATIONS_L org_l on org.FORGID = org_l.FORGID and org_l.FLOCALEID = 2052
where FISDETAIL <> 0 and account.FNUMBER like '1122%'
group by cst.FNUMBER,cst_l.FNAME,account.FNUMBER,org.FNUMBER,org_l.FNAME,account_l.FFULLNAME,FYEAR,FPERIOD
having (sum(FENDBALANCEFOR) <> 0 and sum(FENDBALANCE ) <> 0)