请问个SQL的问题

lim220088 2010-10-22 04:32:44
单号 序号 物料代码 数量
P0001 1 TT.0001 100
P0001 2 TT.002 1003
P0001 3 TT.0003 678
P0001 TT.004 666
P0001 TT.005 777
P002 TT.001 555
P002 TT.002 777
P003 1 TT.001 666
P003 TT.002 99
P003 TT.002 888




这是错误的数据

如何通过SQL脚本做数据处理 根据单号分组,自动把序号填写进去。如下:

单号 序号 物料代码 数量
P0001 1 TT.0001 100
P0001 2 TT.002 1003
P0001 3 TT.0003 678
P0001 4 TT.004 666
P0001 5 TT.005 777
P002 1 TT.001 555
P002 2 TT.002 777
P003 1 TT.001 666
P003 2 TT.002 99
P003 3 TT.002 888
...全文
41 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqlcenter 的回复:]
SQL code
--> 测试数据:#
if object_id('tempdb.dbo.#') is not null drop table #
create table #(单号 varchar(8), 序号 int, 物料代码 varchar(8), 数量 int)
insert into #
select 'P0001', 1, 'TT.0001', 100 union all
……
[/Quote]
速度确实快 2000 的话 要用到临时表了
SQLCenter 2010-10-22
  • 打赏
  • 举报
回复
--> 测试数据:#
if object_id('tempdb.dbo.#') is not null drop table #
create table #(单号 varchar(8), 序号 int, 物料代码 varchar(8), 数量 int)
insert into #
select 'P0001', 1, 'TT.0001', 100 union all
select 'P0001', 2, 'TT.002', 1003 union all
select 'P0001', 3, 'TT.0003', 678 union all
select 'P0001', null, 'TT.004', 666 union all
select 'P0001', null, 'TT.005', 777 union all
select 'P002', null, 'TT.001', 555 union all
select 'P002', null, 'TT.002', 777 union all
select 'P003', 1, 'TT.001', 666 union all
select 'P003', null, 'TT.002', 99 union all
select 'P003', null, 'TT.002', 888

;with cte as
(
select n = row_number()over(partition by 单号 order by getdate()), * from #
)
update cte set 序号=n

select * from #

/*
单号 序号 物料代码 数量
-------- ----------- -------- -----------
P0001 1 TT.0001 100
P0001 2 TT.002 1003
P0001 3 TT.0003 678
P0001 4 TT.004 666
P0001 5 TT.005 777
P002 1 TT.001 555
P002 2 TT.002 777
P003 1 TT.001 666
P003 2 TT.002 99
P003 3 TT.002 888
*/

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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