我遇到了一个问题,关于在表中缺少令我头痛的行。在一个序列中排序行并填充缺失行的空位
作为基础数据,我有以下表:
declare @table table
(
id1 int,
id2 int,
ch char(1) not null,
val int
)
insert into @table values (1112, 121, 'A', 12)
insert into @table values (1351, 121, 'A', 13)
insert into @table values (1411, 121, 'B', 81)
insert into @table values (1312, 7, 'C', 107)
insert into @table values (1401, 2, 'A', 107)
insert into @table values (1454, 2, 'D', 107)
insert into @table values (1257, 6, 'A', 1)
insert into @table values (1269, 6, 'B', 12)
insert into @table values (1335, 6, 'C', 12)
insert into @table values (1341, 6, 'D', 5)
insert into @table values (1380, 6, 'A', 3)
输出应该由ID2进行排序,并按照ch的固定顺序,应该重复进行,直到下一个ID2开始。
顺序:
'A'
'B'
'C'
'D'
如果顺序或者图案中断,它应与空填补缺失的行,让我得到这个结果表:
id1 id2 ch val
----------------------------
1112 121 'A' 12
NULL 121 'B' NULL
NULL 121 'C' NULL
NULL 121 'D' NULL
1351 121 'A' 13
1411 121 'B' 81
NULL 121 'C' NULL
NULL 121 'D' NULL
NULL 7 'A' NULL
NULL 7 'B' NULL
1312 7 'C' 107
NULL 7 'D' NULL
1401 2 'A' 107
NULL 2 'B' NULL
NULL 2 'C' NULL
1454 2 'D' 107
等。 ..
我在找的是一种不用迭代就能做到的方法。
我希望有人能帮助!
在此先感谢!
非常感谢您的解答和解释!你是个天才! –