公司资料表:company
company_Type Type_Name company_ID company_Name
1 国外公司 0001 外国公司A
1 国外公司 0002 外国公司B
2 国内公司 0003 国内公司A
2 国内公司 0004 国内公司B
3 其他公司 0005 其他公司A
3 其他公司 0006 其他公司B收费表:charge
company_ID company_Name charge1 charge2 charge3
0001 外国公司A 1000.00 500.00 600.00
0002 外国公司B 2000.00 400.00 400.00
0003 国内公司A 500.00 300.00 300.00
0004 国内公司B 500.00 700.00 400.00
0005 其他公司A 200.00 200.00 200.00
0006 其他公司B 200.00 200.00 200.00我现在想得到这样的结果:
company_ID company_Name charge1 charge2 charge3
0001 外国公司A 1000.00 500.00 600.00
0002 外国公司B 2000.00 400.00 400.00
国外公司 小计 3000.00 900.00 1000.00
0003 国内公司A 500.00 300.00 300.00
0004 国内公司B 500.00 700.00 400.00
国内公司 小计 1000.00 1000.00 700.00
0005 其他公司A 200.00 200.00 200.00
0006 其他公司B 200.00 200.00 200.00
其他公司 小计 400.00 400.00 400.00
全部公司 合计 4400.00 2300.00 2100.00用一条语句搞定
应该是用 grouping 加 group by with rollup
来写,高手来帮帮忙
谢谢,先
company_Type Type_Name company_ID company_Name
1 国外公司 0001 外国公司A
1 国外公司 0002 外国公司B
2 国内公司 0003 国内公司A
2 国内公司 0004 国内公司B
3 其他公司 0005 其他公司A
3 其他公司 0006 其他公司B收费表:charge
company_ID company_Name charge1 charge2 charge3
0001 外国公司A 1000.00 500.00 600.00
0002 外国公司B 2000.00 400.00 400.00
0003 国内公司A 500.00 300.00 300.00
0004 国内公司B 500.00 700.00 400.00
0005 其他公司A 200.00 200.00 200.00
0006 其他公司B 200.00 200.00 200.00我现在想得到这样的结果:
company_ID company_Name charge1 charge2 charge3
0001 外国公司A 1000.00 500.00 600.00
0002 外国公司B 2000.00 400.00 400.00
国外公司 小计 3000.00 900.00 1000.00
0003 国内公司A 500.00 300.00 300.00
0004 国内公司B 500.00 700.00 400.00
国内公司 小计 1000.00 1000.00 700.00
0005 其他公司A 200.00 200.00 200.00
0006 其他公司B 200.00 200.00 200.00
其他公司 小计 400.00 400.00 400.00
全部公司 合计 4400.00 2300.00 2100.00用一条语句搞定
应该是用 grouping 加 group by with rollup
来写,高手来帮帮忙
谢谢,先
from (
select '全部公司' as company_ID,'合计' as company_Name, sum(charge1) as charge1,
sum(charge2) as charge2,sum(charge3) as charge3,
max(company_ID) || 'Z' as company_ID_sort
from charge
union
select a.Type_Name as company_ID, '小计' as company_Name, sum(charge1) as charge1,
sum(charge2) as charge2,sum(charge3) as charge3,
max(a.company_ID) || '1' as company_ID_sort
from company a inner join charge b on a.company_ID=b.company_ID
group by a.Type_Name
union
select a.company_ID,a.company_Name,charge1,charge2,charge3, a.company_ID as company_ID_sort
from company a inner join charge b on a.company_ID=b.company_ID
)
order by company_ID_sort
department_name) AS department_name,
DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id,
COUNT(*) "Total Empl", AVG(salary) * 12 "Average Sal"
FROM employees e, departments d
WHERE d.department_id = e.department_id
GROUP BY CUBE (department_name, job_id);DEPARTMENT_NAME JOB_ID Total Empl Average Sal
------------------------------ ---------- ---------- -----------
Accounting AC_ACCOUNT 1 99600
Accounting AC_MGR 1 144000
Accounting All Jobs 2 121800
Administration AD_ASST 1 52800
.
.
.
All Departments ST_MAN 5 87360
All Departments All Jobs 107 77798.1308