通过查询语句得到下表,数据规则如表中所示,各单位项目数据向各主管部门汇总,各主管部门项目数据向合计行汇总。(基层单位、项目名称、金额都在a表中,主管部门的名称在另一张表b中,关联字段为chr_id)
坦白讲不知道你在问啥!
我觉得楼上回答的很好。。。
特别着急,大神们帮帮忙
大致的方法
1.如果要给“主管单位”汇总,查对应”基层单位“的金额,然后用sum(”金额“),可得出
2.如果查汇总,可以直接,查所有”基层单位“的金额,然后用sum,得出
//主管单位表
CREATE TABLE parentdeptinfo (
dept_id varchar(100) DEFAULT NULL,
dept_name varchar(100) DEFAULT NULL,
order_id varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO parentdeptinfo VALUES ('100', '主管单位1', '1');
INSERT INTO parentdeptinfo VALUES ('160', '主管单位2', '4');
//基层单位表
CREATE TABLE deptinfo (
dept_id varchar(100) DEFAULT NULL,
dept_name varchar(100) DEFAULT NULL,
order_id varchar(100) DEFAULT NULL,
parent_id varchar(100) DEFAULT NULL,
itemname varchar(100) DEFAULT NULL,
cash int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO deptinfo VALUES ('100001', '基层单位1', '2', '100', '项目1', '10000');
INSERT INTO deptinfo VALUES ('160002', '基层单位4', '6', '160', '项目4', '50000');
INSERT INTO deptinfo VALUES ('100002', '基层单位2', '3', '100', '项目2', '23000');
INSERT INTO deptinfo VALUES ('160003', '基层单位5', '7', '160', '项目5', '45000');
INSERT INTO deptinfo VALUES ('160001', '基层单位3', '5', '160', '项目3', '120000');
//查询语句
SELECT 单位编号,单位名称,项目名称,预算
FROM
(select a.dept_id "单位编号",a.dept_name "单位名称",a.itemname "项目名称",a.cash "预算"
,a.order_id
from deptinfo a,parentdeptinfo b
where a.parent_id = b.dept_id
UNION ALL
select b.dept_id "单位编号",b.dept_name "单位名称",'' AS "项目名称",sum(a.cash) "预算"
,b.order_id
from deptinfo a,parentdeptinfo b
where a.parent_id = b.dept_id
GROUP BY b.dept_id,b.dept_name
UNION ALL
select "合计" AS "单位编号",'' AS "单位名称",'' AS "项目名称",sum(a.cash) as "预算" ,0 AS order_id
from deptinfo a)hj
ORDER BY hj.order_id