如何写这个存储过程,

kevin_w 2001-12-11 08:41:34
一个公司下属有N个子公司,须统计一些数据,,,
表A如下: 子公司代码 子公司名称 出口量 进口量 ···
com_code com_name ex_num im_num
另一表B 产品编号 进出口标志 ···· (产品编号的前两位为子公司代码)
en_id ie_mark
能否写一存储过程,在表B中按 子公司(即产品编号前两位)及进出口标志 统计出所有产品的总的 进口量出口量,再到表A 中更新其中数据
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin_w 2001-12-12
  • 打赏
  • 举报
回复
.....
kevin_w 2001-12-12
  • 打赏
  • 举报
回复
a 表结构如下
子公司代码 子公司名 出口量 进口量 ...
com_code com_name ex_num im_num ...
01 驻北京公司 NULL NULL ...
02 驻上海公司 NULL NULL ...
. . .
B 表结构如下
产品编号 进出口标志 ...
en_id ie_mark ...
0100023 I
0200212 I
0122222 I
0111111 E
0221111 I
...
EN_ID 的前两位即为 COM_CODE 出口量即为 所有IE_MARK=E的数据
现要写一存储过程分别统计 子公司代码为 01 02 03 ... 的进出口量,然后写入A表
kevin_w 2001-12-12
  • 打赏
  • 举报
回复
不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口 次数 ,,相当于求B表中符合条件的 COUNT(*) ,

kevin_w 2001-12-12
  • 打赏
  • 举报
回复
不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口次数,,相当于求B表中符合条件的 COUNT(*)
kevin_w 2001-12-12
  • 打赏
  • 举报
回复
不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口次数,,相当于求B表中符合条件的 COUNT(*)
昵称被占用了 2001-12-12
  • 打赏
  • 举报
回复
写了两次表结构都没有写B表的进出口数量字段(第一次回答时用Num),难道没有这个字段?!

试过上面语句没有?加个过程头不就是可以一次更新A表的所有子公司,再从A表查询不就行了?

kevin_w 2001-12-12
  • 打赏
  • 举报
回复
循环处理是可以实现,不过数据量比较大,实现的速度很慢,能否有更有效的办法呢?
panther_totem 2001-12-12
  • 打赏
  • 举报
回复
你就用游标,对B表的数据一条一条的处理,根据en_id的前两个字符和ie_mark来对A表的数据进行UPDATE,修改其相应的ex_num 和 im_num,循环处理完了,ex_num 和 im_num不就累加得到了你需要的结果了。
昵称被占用了 2001-12-11
  • 打赏
  • 举报
回复
如果A表有所有子公司 AND B表有所有子公司 就可以!
kevin_w 2001-12-11
  • 打赏
  • 举报
回复
TO:Haiwer(海阔天空) 
这样可以 统计 出所有 子公司的数据??好象不行···
昵称被占用了 2001-12-11
  • 打赏
  • 举报
回复
update a
set ex_num=(select sum(Num) from b
where en_id like rtrim(a.com_code)+'%' and ie_mark='e'),
im_num=(select sum(Num) from b
where en_id like rtrim(a.com_code)+'%' and ie_mark='I')

呵呵,示意性的!


34,567

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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