ESAP达摩院 思想有多远,我们就能走多远

ES财务总账无限层级展开


最近一直忙于开发财务成本核算,财务小MM前天跑来跟我倒苦水,希望ES的财务总账能展开,这样就相当于也有科目余额表的功能了,好吧,今天周五,趁着空闲来一波久违的ES开发!

效果图

  • 点击按钮就可以自动展开或收缩了,是不是很棒?

  • 1层-总账

  • 2层-总账

  • 3层-总账

  • 4层-总账

  • 5层-总账

  • 5层以上-总账

关键sql视图

 with cte as --v科目
(
    select 科目代码,上级 pid,科目代码 科目,代码,名称,科目全称,0 as lvl from 科目
    union all
    select c.科目代码,d.上级,d.科目代码,d.代码 ,d.名称,d.科目全称,lvl+1 
		from cte c inner join 科目 d on c.科目 = d.上级
)
select * from cte 
--order by 科目代码,科目
 with cte as --v科目层
(
    select 科目代码,上级 pid,科目代码 科目,代码,名称,科目全称,0 as lvl 
		from 科目 where isnull(上级,'')='' 
    union all
    select c.科目代码,d.上级,d.科目代码,d.代码 ,d.名称,
		cast(replicate('·',lvl+1)+d.科目全称 as nvarchar(100)),lvl+1 
		from cte c inner join 科目 d on c.科目 = d.上级
)
select * from cte 
--order by 科目代码,科目

然后就是各种撸表间公式了,嗯,模板拿去,别跟村长客气,用爽了记得捐赠esap项目啊,母哈哈哈哈,ε=ε=ε=┏(゜_゜;)┛逃

猛戳这里下载→:总账ES模板

小结

主要应用了sql的cte递归,要求sql2005+哦~

By woylin 2017-6-16