• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

这条语句,请教高手!

wangyang005 2012-08-30 08:54:50
要实现这样的功能
字段
NAME B C D
a 20 23 43
a 28 43 71
b 36 20 56
b 13 56 69
……
B+C=D,然后D值赋给下一行C怎么写?
急!
...全文
53 点赞 收藏 3
写回复
3 条回复
wangyang005 2012年08月30日
高!感谢!如果是一句sql呢?
回复 点赞
问苍天人生几何 2012年08月30日

-->try
declare @test table(name varchar(1),B int,C int,D int)
insert into @test
select 'a', 20, 23, 43 union all
select 'a', 28, null, 71 union all
select 'b', 36, 20, 56 union all
select 'b', 13, null, 69
;with cte as
(
select row_number() over(partition by name order by name) rn,* from @test
)
select name,B,C=isnull((select D from cte where t.rn>rn and t.name=name),C),D from cte t
/*
name B C D
---- ----------- ----------- -----------
a 20 23 43
a 28 43 71
b 36 20 56
b 13 56 69
*/

回复 点赞
开着拖拉机泡妞 2012年08月30日

--> 测试数据:[test]
if object_id('[test]') is not null drop table [test]
go
create table [test]([NAME] varchar(1),[B] int,[C] int)
insert [test]
select 'a',20,23 union all
select 'a',28,43 union all
select 'b',36,20 union all
select 'b',13,56
go

;with t
as(
select px=row_number()over(partition by [NAME] order by getdate()),
* from test
)
select [NAME],[B],
isnull((select [B]+[C] from t a where a.px=b.px-1 and a.[NAME]=b.[NAME]),[C]) as [C],
[B]+[C] as [D]
from t b
/*
[NAME] [B] [C] [D]
-----------------------------------
a 20 23 43
a 28 43 71
b 36 20 56
b 13 56 69
*/
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告