求SQL语句,急,在线等!!!))

zxz1215 2006-04-20 11:50:40
有一个表其中有列名bill,其中有3个数据,分别是001,002,003

还有列名分别 cntr ,article ,qty (表如下:)

bill cntr article qty
001 2001 2005 1.00
002 2002 2005 2.00
003 2003 2005 1.00
001 2002 2005 1.00
003 2001 2005 1.00
. . . .
. . . .
. . . .
数据有很多
其中cntr+article 是物品的唯一码,qty这列是数量,要实现cntr+article 有重复的把数量(qty)加到bill=001中,然后删掉cntr+article 在列bill=001之外的那两条(即在bill=002,bill=003中的)。
(注:在每个bill中不会有重复的cntr+article 出现)

...全文
187 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
itblog 2006-04-20
学习啊,高手太多啦~
  • 打赏
  • 举报
回复
liuyinbo0109 2006-04-20
declare @t table(bill char(3), cntr char(4), article char(4), qty numeric(10,2))
insert @t
select '001','2001','2005',1.00 union all
select '001','2001','2005',2.00 union all
select '002','2002','2005',3.00 union all
select '002','2002','2005',2.00 union all
select '003','2003','2005',1.00 union all
select '001','2002','2005',1.00 union all
select '003','2001','2005',1.00 union all
select '003','2001','2005',2.00 union all
select '002','2002','2005',3.00

select bill=min(bill),cntr,article,qty=sum(qty)
from @t
group by bill,cntr,article
----结果
001 2001 2005 3.00
001 2002 2005 1.00
002 2002 2005 8.00
003 2001 2005 3.00
003 2003 2005 1.00
  • 打赏
  • 举报
回复
viptiger 2006-04-20
在插入临时表的时候对 20012005 用substring('20012005',1,4),substring('20012005',4,4)做一下拆分以保持表的原有结构
  • 打赏
  • 举报
回复
viptiger 2006-04-20
declare @t table(bill char(3), cntr char(4), article char(4), qty numeric(10,2))
insert @t
select '001', '2001', '2005', 1.00 union all
select '002', '2002', '2005', 2.00 union all
select '003', '2003', '2005', 1.00 union all
select '001', '2002', '2005', 1.00 union all
select '003', '2001', '2005', 1.00

select min(bill),(cntr+article),sum(qty) from @t
group by (cntr+article)

--结果
---- -------- ----------------------------------------
-- 001 20012005 2.00
-- 001 20022005 3.00
-- 003 20032005 1.00
--
-- (所影响的行数为 3 行)

--把得到的结果插入临时表,删除这个表的所有数据,再把临时表的数据导入
  • 打赏
  • 举报
回复
jwt1982 2006-04-20
来晚了啊
  • 打赏
  • 举报
回复
xeqtr1982 2006-04-20
子陌老大就是牛
  • 打赏
  • 举报
回复
wwh999 2006-04-20
没语言了,子陌红尘已经答得很清楚了...没得补充.
  • 打赏
  • 举报
回复
子陌红尘 2006-04-20
--将重复数据的qty汇总到bill为'001'的记录
update t
set
qty=(select sum(qty) from 表 where cntr=t.cntr and article=t.article)
from
表 t
where
bill='001'

--删除bill不为'001'的记录
delete 表 where bill!='001'
  • 打赏
  • 举报
回复
子陌又抢了,呵呵。
  • 打赏
  • 举报
回复
zxz1215 2006-04-20
子陌老大更新对了,但删除不对,不过我已经写出来了,谢谢
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2006-04-20 11:50
社区公告
暂无公告