Transact SQL:具有特定逻辑的有序行内的字符串连接

时间:2019-01-24 13:16:50

标签: sql-server tsql sql-server-2017

提供表格

sub

所需的输出是这样:

CREATE TABLE dbo.T
(
    CN char(2) NOT NULL,
    GN int NOT NULL,
    SG int NOT NULL,
    SN int NOT NULL,
    C varchar(3),
    CB varchar(max)
);
INSERT INTO dbo.T(CN,GN,SG,SN,C,CB)
VALUES
('P1',9,6,0,'020','AAA'),
('P1',9,6,1,NULL,'BBB'),
('P1',9,6,2,'020','CCC'),
('P1',9,6,3,NULL,'DDD'),
('P1',9,6,4,'020','EEE'),
('P1',9,6,5,NULL,'FFF'),
('P1',9,6,6,'020','GGG'),
('P1',9,6,7,NULL,'HHH'),
('P1',9,6,8,'020','JJJ'),
('P1',9,6,9,NULL,'LLL'),
('P1',9,6,10,NULL,'MMM'),
('P1',9,6,11,NULL,'NNN')

因此,您遍历了CN GN SG SN C CB P1 9 6 0 020 AAABBB P1 9 6 2 020 CCCDDD P1 9 6 4 020 EEEFFF P1 9 6 6 020 GGGHHH P1 9 6 8 020 JJJLLLMMMNNN CNGNSG排序的所有行。从SN中第一次出现无NULL值开始。当下一行在列C中获得NULL值时,只要下一行在列C中不为NULL,则串联CB值。

1 个答案:

答案 0 :(得分:3)

我将<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBawDPz1seR1vu-Fw62CDRjmMU6B_oDOZ4&libraries=places&callback=initAutocomplete" async defer></script> 累积聚合一起使用:

CTE