我在表中有以下数据:
Index Domain Name
-------------------------
1 AAA Aaron.B
NULL NULL NULL
1 AAA Aaron.B2
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
2 AAA2 Aaron.D
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
我要实现的目标如下:
Index Domain Name
------------------------------
1 AAA Aaron.B
1 AAA Aaron.B
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
2 AAA2 Aaron.D
2 AAA2 Aaron.D
2 AAA2 Aaron.D
2 AAA2 Aaron.D
我们将不胜感激。
关于, 约翰
答案 0 :(得分:0)
类似的事情会做:
declare @t table ([index] int, domain nvarchar(max), [name] nvarchar(max))
insert @t values
(1 , 'AAA' , 'Aaron.B' ),
(NULL, NULL, NULL ),
(1 , 'AAA' , 'Aaron.B2' ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(2 , 'AAA2', 'Aaron.D' ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL ),
(NULL, NULL, NULL )
; with t as
(
select *, ROW_NUMBER() over (order by (select null)) rn
from @t t1
)
select isnull(x.[index], t.[index])
, isnull(x.domain, t.domain)
, isnull(x.[name], t.[name])
from
(
select *
, (select max(t2.rn) from t t2 where t2.[index] is not null and t1.rn > t2.rn) rn2
from t t1
)x
left join t on x.rn2 = t.rn
结果:
----------- ------------ -------------
1 AAA Aaron.B
1 AAA Aaron.B
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
1 AAA Aaron.B2
2 AAA2 Aaron.D
2 AAA2 Aaron.D
2 AAA2 Aaron.D
2 AAA2 Aaron.D