zpy2 发表于 2021-5-24 04:51
谈谈excel的数据结构
根据“记账凭证清单”自动生成“日记账”
create temp table a凭证一览表2 as select * from a凭证一览表 where 科目代码='100201';create temp table a凭证一览表2_明细表 as with recursive under_alice(排序,rowid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额) as (select '00a' 排序,0 rowid,'' 年,'' 月,'' 日,'' 序号,'' 凭证编号,'期初余额' 摘要,'' 科目代码,'' 总账科目,'' 明细科目,'' 借方发生额,'' 贷方发生额,期初借方余额-期初贷方余额 余额 from a期初余额表 where 科目代码='100201' union all select a凭证一览表2.月||'b' 排序,a凭证一览表2.rowid ,a凭证一览表2.年,a凭证一览表2.月,a凭证一览表2.日,a凭证一览表2.序号,a凭证一览表2.凭证编号,a凭证一览表2.摘要,a凭证一览表2.科目代码,a凭证一览表2.总账科目,a凭证一览表2.明细科目,a凭证一览表2.借方发生额,a凭证一览表2.贷方发生额,a凭证一览表2.借方发生额-a凭证一览表2.贷方发生额+under_alice.余额 as 余额 from a凭证一览表2 join under_alice on a凭证一览表2.rowid-1=under_alice.rowid) select 排序,rowid rid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额 from under_alice; create temp table 本月合计表 as select 月||'c' 排序,'' rid,' ' 年,月,' ' 日,' ' 序号,' ' 凭证编号,'本月合计' 摘要,' ' 科目代码,' ' 总账科目,' ' 明细科目,sum(借方发生额) 借方发生额,sum(贷方发生额) 贷方发生额,'' 余额 from a凭证一览表2 group by 月; with recursive accumulate (rowid,排序,rid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额) as ( select rowid,月||'d' 排序,'' rid,' ' 年,'' 月,' ' 日,' ' 序号,' ' 凭证编号,'本年累计' 摘要,' ' 科目代码,' ' 总账科目,' ' 明细科目,借方发生额,贷方发生额,'' 余额 from 本月合计表 where rowid=1 union all select 本月合计表.rowid,本月合计表.月||'d' 排序,'' rid,' ' 年,'' 月,' ' 日,' ' 序号,' ' 凭证编号,'本年累计' 摘要,' ' 科目代码,' ' 总账科目,' ' 明细科目,accumulate.借方发生额+本月合计表.借方发生额 借方发生额,accumulate.贷方发生额+本月合计表.贷方发生额 贷方发生额,'' 余额 from 本月合计表 join accumulate on 本月合计表.rowid-1=accumulate.rowid limit 20),ledger_sorted as( select 排序,rid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额 from accumulate union select 排序,rid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额 from 本月合计表 union select 排序,rid,年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,借方发生额,贷方发生额,余额 from a凭证一览表2_明细表 )select 年,月,日,序号,凭证编号,摘要,科目代码,总账科目,明细科目,number_format(借方发生额,2) 借方发生额,number_format(贷方发生额) 贷方发生额,number_format(余额,2) 余额 from ledger_sorted |