数据库高手请进,如何以最小的系统开支写这存储过程888

kevin_w 2001-12-20 09:05:03
表一 com_total
子公司编号 子公司名称 进口商品总票数 出口商品总票数 免关税进口商品总票数 免关税出口商品总票数 ...
com_id com_name i_num e_num f_i_num f_e_num ...
21 上海公司
31 杭州公司

表二 im_entry_head 出口商品单证表

商品编码 商品名称 ...
entry_id entry_name ...
21100001
31100002
21100001
表三 ex_entry_head 进口商品单证表

商品编码 商品名称 ...
entry_id entry_name ...

表四 im_free 免关税进口商品表

商品编码 商品名称 ...
entry_id entry_name ...

表五 ex_free 免关税进口商品表

商品编码 商品名称 ...
entry_id entry_name ...

其中商品编码的前两位为子公司的编号 即LEFT(ENTRY_ID,1,2)和COM_ID可对应,如
商品编号 为211000001 为代码(com_code)为 21 的子公司的进出口商品
另商品单证表中的一条记录相当于一票,如 COUNT(*) FROM IM_ENTRY_HEAD 即为所有进口商品的总票数。
现要在表二 三 四 五 中分别按商品编号的前两位(即子公司)来统计各子公司进口商品总票数 出口商品总票数 免关税进口商品总票数 免关税出口商品总票数票数,然后写入表COM_TOTAL中
如何写一存储过程,以最小的系统开支实现(现实中,表COM_TOTAL要统计的字段有三十个左右,也就说要涉及30多个表,且子公司也有大概20个左右,如用子公司代码循环分别统计,虽可实现,不过系统开支将会非常的大)
...全文
37 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
iclgh 2001-12-20
  • 打赏
  • 举报
回复
有30多个表,又不想对30个表处理,怎么行,表设计有问题,为什么不设计到一个表里用类型来区别ex_free or im_free等。否则你始终得把30个表的数据连起来。com_Total也应该是
com_id com_name type num
这样就可以用
update com_total set a.num=b.num from com_total,
(Select substring(entry_id,1,2) as com_id,type,count(*) as num from group by substring(entry_id,1,2),type) as b where a.com_id=b.com_id and a.type=b.type
否则,你只有一个表一个表来count(×)后update了

7,394

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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