我想将结束日期操作为下一条记录 startdate 或同一天发生的 shopID 记录,然后如果下一行开始时间和结束日期之前的开始时间交叉,则获取后面记录的开始时间并更新前一行结束时间中的值下一个记录开始日期。
例如 (ShopId: 9856) 第一条记录的结束日期是“2020-01-08 09:18:52”,它与下一条记录的开始时间“2020-01-08 09:09:48”交叉。在这里,我的逻辑需要查找在同一天发生的此类实例并将第一条记录的结束日期操作到下一条记录开始日期
CREATE TABLE [dbo].[TestTab1](
StoreID [int] NOT NULL,
PurchaseID [int] NOT NULL,
ShopID [int] NOT NULL,
LocationID [int] NOT NULL,
starttime [datetime] NOT NULL,
Endtime [datetime] NOT NULL,
) ON [PRIMARY]
INSERT INTO [TestTab1]
VALUES
(1020,20200102,9856,0010,'2020-01-08T09:08:53','2020-01-08T09:18:52'),
(1021,20200102,9856,0020,'2020-01-08T09:09:48','2020-01-08T09:11:52'),
(1022,20200102,9856,0030,'2020-01-08T09:12:53','2020-01-08T09:14:52'),
(1023,20200102,9856,0040,'2020-01-08T09:16:48','2020-01-08T09:18:52')
最终结果集:
StoreID |PurchaseID |ShopID |LocationID |starttime |Endtime
--------|-----------|-------|-----------|--------------------|-------------------
1020 |20200102 |9856 |10 |2020-01-08 09:08:53 |2020-01-08 09:09:48
1021 |20200103 |9856 |20 |2020-01-08 09:09:48 |2020-01-08 09:11:52
1022 |20200102 |9856 |30 |2020-01-08 09:12:53 |2020-01-08 09:14:52
1023 |20200104 |9856 |40 |2020-01-08 09:16:48 |2020-01-08 09:18:52