一个表A示原数据表;一表B中的数据是A表的拆分,将拆分后的数据插入到表A中,然后删除A表中的该条老数据。
主要拆分是A表中的一个数量(将数量拆分成不等的份儿,还有一个C字段是变化,其余字段值不变)
例如:
表A
ID Qty Name BillNo
1 20 Kitty 130816
表B
ID Qty Name BillNo
1 10 Cate 130816
2 10 Lily 130816
将表B中的两条复制到表A中,将表A中的那条老数据删除,该存储过程怎么写
你应该还有一张表,就是说明130816 和 Kitty
--删除A表数据
delete from A where exists(select 1 from B where A.BillNo=B.BillNo);
--插入数据
insert into A
select row_number() over(order by BillNo) as id,Qty,C.Name ,A.BillNo
from (select BillNo,Sum(Qty) from B group by BillNo) A
left join C on A.BillNo=C.BillNo
130816,对的,是另一个表里的数据,跟A表有关联
Kitty只是数据,没什么意义的,在B表拆分的时候值变了而已
@lydiamiao: 稍微改动一下就可以用了,这个很简单的。
@kylin.chen: 那如果A表中很多字段,B表中只有这几个,且B表中也就这几个需要更新到A表中,A表中其余的保持不变怎么做……
@lydiamiao: 上面那个删除语句不要,把下面的insert语句更换为update语句,update语句类似:update A set A.name=B.name from A left join B on A.Id=B.Id where A.BillNo='123'
@kylin.chen: 最后要的结果是A表中两条新的数据
@lydiamiao: 不明白?