最近一直忙于开发财务成本核算,财务小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