首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tsql组按最小和最大时间为同一日期

tsql组按最小和最大时间为同一日期
EN

Stack Overflow用户
提问于 2022-10-11 12:11:11
回答 1查看 39关注 0票数 0

我有一个数据,其中每个人可以有事件的时间进入和事件超时数据,可以是多次在同一日期记录迈克在下面的代码。

代码语言:javascript
复制
DECLARE @vtable TABLE 
(
    Id Int NOT NULL, 
    Name VARCHAR(MAX) NOT NULL,
    EventDate date NOT NULL, 
    EventTime time NOT NULL
);

INSERT INTO @vtable (Id, Name, EventDate, EventTime)
VALUES (1, 'Mike', '2022-10-10', '08:00'),
       (2, 'Mike', '2022-10-10', '11:00'),
       (3, 'Mike', '2022-10-10', '12:00'),
       (4, 'Mike', '2022-10-10', '18:00'),
       (5, 'Jen', '2022-10-10', '09:00'),
       (6, 'Jen', '2022-10-10', '12:00'),
       (7, 'Jen', '2022-10-11', '14:00'),
       (8, 'Jen', '2022-10-11', '18:00')

我对以下查询进行了尝试,但没有得到所需的结果:

代码语言:javascript
复制
SELECT 
    Name, EventDate, 
    MIN(EventTime) AS In, MAX(EventTime) AS Out 
FROM
    @vtable 
GROUP BY
    Name, EventDate

我想得到这样的结果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-11 12:16:13

一个简化的解决方案是使用适当的分组:

代码语言:javascript
复制
SELECT Name, EventDate, MIN(EventTime) AS [In], MAX(EventTime) AS [Out]
FROM (
   SELECT *, ROW_NUMBER() OVER (PARTITION BY Name, EventDate ORDER BY Id) AS Rn
   FROM @vtable
) t
GROUP BY Name, EventDate, (Rn - 1) / 2
ORDER BY Name, EventDate
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74027937

复制
相关文章

相似问题

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