首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调整开始日期和结束日期sql

调整开始日期和结束日期sql
EN

Stack Overflow用户
提问于 2020-09-24 04:56:29
回答 1查看 43关注 0票数 1

给定MS SQL Server 2016中的数据集

代码语言:javascript
运行
复制
StoreID PurchaseID ShopID LocationID Starttime          Endtime
1020    20200102    9856  0010    2020-01-08 09:08:53  2020-01-08 09:11:52
1021    20200102    9856  0020    2020-01-08 09:09:48  2020-01-08 09:11:52

这里的StoreID是主键。我正在寻找一个查询,它将第一条记录的结束时间的值更改为下一条记录的开始时间中存在的值。准确地说,我需要查找PurchaseID和shopkeeperID组合在同一天发生的记录,其中两者的位置id不同,然后获取后面记录的开始时间,并更新前一行结束时间中的值。

注意:在这里,我只给出了两个样本大小,但在我的数据集中,上述场景的样本大小超过了两个。

我的结果集应该如下所示:

代码语言:javascript
运行
复制
StoreID PurchaseID  ShopkID LocationID Starttime         Endtime
1020    20200102    9856    0010  2020-01-08 09:08:53  2020-01-08 09:09:48
1021    20200102    9856    0020  2020-01-08 09:09:48  2020-01-08 09:11:52
EN

回答 1

Stack Overflow用户

发布于 2020-09-24 05:03:59

一种方法与此类似,尽管子select的性能不如SET SQL:

代码语言:javascript
运行
复制
UPDATE 
    T
SET
    T.purchaseendtime = 
        (
            SELECT TOP 1 
                purchasestarttime 
            FROM 
                TABLE_NAME T2
            WHERE 
                T2.PurchaseStartTime >  T.PurchaseStartTime
                AND T2.PurchaseID = T.PurchaseID
                AND T2.ShopkeeperID = T.ShopkeeperID
                AND T2.LocationID <> T.LocationID
                AND Convert(date, T2.PurchaseStartTime) = Convert(date, T.PurchaseStartTime)
            ORDER BY
                T2.PurchaseStarttime
        )
FROM 
    TABLE_NAME T
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64036093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档