在表T1中有以下数据

akeewww 2002-08-08 01:47:31
在表T1中有以下数据

dep_code dep_name emp_name salary
001 工程部 张三 1000.00
00101 工程木工组 李四 1100.00
00101 工程木工组 赵六 800.00
00102 工程水电组 王五 900.00
002 总办 刘八 700.00


要求生成以下汇总表

dep_name salary_total
工程部 3800.00
总办 700.00

非常感谢!
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GaoFX 2002-08-13
  • 打赏
  • 举报
回复
看你的编号的编码结构很明显的部门是分级管理的,并且分级依赖编号,这样就简单了:
select code, dep_name, sum(a.salary) from ( select substring( dep_code, 1, 3) as code, salary from T1 ) a, T1
where code = dep_code
group by code, dep_name

这是用一条SQL语句来写的,实际可以把取数据与取部门名称的分开来写。
在SQL SERVER2000中通过。
如果不需要部门编号,可以把code在select中去掉,group by中也不能再包含。如果级数多了或长度不固定,则动态生成SQL语句时修改substring中的内容。
runnerrunning 2002-08-13
  • 打赏
  • 举报
回复
建立一个计算字段“depart“,然后取department name的前4个字节,分组统计
caosheng02 2002-08-13
  • 打赏
  • 举报
回复
同意楼上的话。
唉,我来晚了……
用一个嵌套的select就可以了。
LIUZKCZ 2002-08-09
  • 打赏
  • 举报
回复
取dep_code的前三个字符,生成一个计算字段,隐藏,
然后按这个计算字段汇总.
jeking 2002-08-08
  • 打赏
  • 举报
回复
工程部
工程木工组
工程水电组
这三个有什么关系?
有关系就能生成!
没关系,即只有文字上的相近,那有点麻烦了
喔,看见了代码可以用。但是最好建一张关系表。如
parent_dept dep_code
001 00101
001 00102

这样你的汇总就简单多了。
否则只有麻烦一点,一个一个地填了。
求和可用
string ls_dep_code
decimal ld_salary_total
declare my_cur cursor for select dep_name,dep_code from t1 where length(dep_code) = 3
open my_cur;
fetch my_cur into :ls_dep_name,:ls_dep_code;
do while sqlca.sqlcode = 0
select sum(salary) into :ld_salary_total from t1 where )depcode like :ls_dep_code + '%');
insert into total_table(dep_name,salary_total) values(:ls_dep_name,:ld_salary_total);
fetch my_cur into :ls_dep_name,:ls_dep_code;
loop
close my_cur;
commit;


1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧