sql 两张表的并集运算

cuiwenjun57 2012-08-12 02:52:07
有两张表格,a,b,
a中有盘点数量,b中有库存数量
我想实现的功能是,a,b两张表做差,差异不为零的话就把这条记录写入b表中,要是b或者a中的商品不一样的话,也写入b中
怎么实现,请给代码,谢谢谢谢
...全文
265 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
人生无悔 2012-08-12
  • 打赏
  • 举报
回复

--创建表结构
select 商品,库存数量 into b_copy from b where 1=2;
--合并结果放到中间表
insert into b_copy(商品,库存数量)
select t.商品,abs(sum(t.数量))
from (select a.商品,(a.盘点数量*-1) 数量 from a
union all select b.商品,b.库存数量
) t
group by t.商品
having sum(t.数量)<>0;
--按合并后的数量更新b表
update b set 库存数量=b_copy.库存数量
from b_copy
where b.商品=b_copy.商品;
--插入b表不存在的商品
insert into b(商品,库存数量)
select 商品,库存数量
from b_copy
where b_copy.库存数量<>0 and
not exists (select 1 from b_copy
where b_copy.商品=b.商品);
--删除中间表
drop table b_copy;
devmiao 2012-08-12
  • 打赏
  • 举报
回复
用linq
groupby一下。
cuiwenjun57 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
参考:
http://www.cnblogs.com/insus/articles/1925770.html
[/Quote]
这个我不能用存储过程的,因为我有数据参数要放入数据库语句中啊!
  • 打赏
  • 举报
回复
winform 就不用存储过程了?
insus 2012-08-12
  • 打赏
  • 举报
回复
cuiwenjun57 2012-08-12
  • 打赏
  • 举报
回复
我用的是c# winform。不懂不说的意思。在线等啊
  • 打赏
  • 举报
回复


直接在存储过程中写,多方便

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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