我正尝试在SQL Server中更改具有以下条件的行。
1.合并具有相似code
的所有行,从第1行中获取第一个日期,从最后一行中获取最后一个日期。
1.不相似的行将保持原样。
CREATE TABLE ABCD(
id int,
FirstDate date,
LastDate date,
code varchar(23)
);
Insert into ABCD VALUES
(1, '2022-12-12','2022-12-12', 'A'),
(2, '2022-12-13','2022-12-13', 'A'),
(3, '2022-12-15','2022-12-15', 'A'),
(4, '2022-12-16','2022-2-16', 'B'),
(5, '2022-12-18','2022-12-18', 'A'),
(5, '2022-12-19','2022-12-19', 'A'),
(6, '2022-12-20','2022-12-20', 'C')
SELECT * from ABCD
预期结果为
(1, '2022-12-12','2022-12-15', 'A'),
(2, '2022-12-16','2022-2-16', 'B'),
(3, '2022-12-18','2022-12-19', 'A'),
(4, '2022-12-20','2022-12-20', 'C')
尝试
SELECT *
FROM ABCD #A
INNER JOIN ABCD #B on #A.code != #B.code AND #A.id = #B.id
我想不出任何逻辑来让这个工作。建议是高度赞赏。谢谢!
1条答案
按热度按时间vqlkdk9b1#
你可以用逻辑来做,它有几个步骤
下面是一个db<>fiddle,其中包含了答案,并分解了各个步骤,以便您可以看到过程中每个点的数据。
哦-这是结果