前端之家收集整理的这篇文章主要介绍了
PostgreSQL 之数据逐级汇总计算方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
-- Postgresql 之数据逐级汇总计算方法
-- 作者:老农民
-- QQ: 46715422
-- Email: flyingercn@wo.cn
-- 微信: ericliu_77
--我们在财务系统和ERP系统中会涉及到按照科目代码逐级累计的计算,
--针对Postgresql 写了这么个sql
create temp table tb(code VARCHAR(13),numb INT);
insert into tb
values ('0.01',null),('0.01.01',('0.01.01.01',100.00),('0.01.02',('0.01.02.01',('0.01.02.02',('0.01.02.02.01',('0.01.02.02.02',('0.01.03',100.00);
select * from tb;
code | numb
---------------+------
0.01 |
0.01.01 |
0.01.01.01 | 100
0.01.02 |
0.01.02.01 | 100
0.01.02.02 |
0.01.02.02.01 | 100
0.01.02.02.02 | 100
0.01.03 | 100
(9 行记录)
--下面两种函数写法,结果一致
select *,(select sum(numb) from tb where position(t.code in tb.code)=1) as sum_numb from tb t;
select *,(select sum(numb) from tb where strpos(tb.code,t.code)=1) as sum_numb from tb t;
code | numb | sum_numb
---------------+------+----------
0.01 | | 500
0.01.01 | | 100
0.01.01.01 | 100 | 100
0.01.02 | | 300
0.01.02.01 | 100 | 100
0.01.02.02 | | 200
0.01.02.02.01 | 100 | 100
0.01.02.02.02 | 100 | 100
0.01.03 | 100 | 100
(9 行记录)
要买正宗新疆特产,微信扫下面二维码,加老农民咨询购买:@H_502_5@