SQL Server查询以选择除在特定时间间隔内重复的记录之外的所有记录

至尊

我想选择表中的所有记录,除了在给定时间间隔内为 CustId 重复的一些记录。

以下是理解需求的简单示例,假设我想跳过相同 CustId 在 60 分钟(60 分钟是时间间隔)内重复的记录。正如您在下面的数据中所看到的,“Cust1”的第 2 行和第 3 行重复,“Cust2”的第 6 行重复。

+------------------------------------+ 
| 身份证 | 客户 ID | 捕获时间 | 
+------------------------------------+ 
| 1 | 'Cust1' | '2017-10-01 10:30' | 
| 2 | 'Cust1' | '2017-10-01 10:45' | -- 重复行
| 3 | 'Cust1' | '2017-10-01 11:35' | -- 重复行
| 4 | 'Cust1' | '2017-10-01 12:40' | 
| 5 | 'Cust2' | '2017-10-01 16:15' | 
| 6 | 'Cust2' | '2017-10-01 17:00' | -- 重复行
| 7 | 'Cust4' | '2017-10-02 08:00' | 
| 8 | 'Cust1' | '2017-10-02 10:45' | 
| 9 | 'Cust3' | '2017-10-02 13:00' | 
| 10 | 'Cust3' | '2017-10-02 14:05' | 
+----+---------+------------+

所以结果应该是

+------------------------------------+ 
| 身份证 | 客户 ID | 捕获时间 | 
+------------------------------------+ 
| 1 | 'Cust1' | '2017-10-01 10:30' | 
| 4 | 'Cust1' | '2017-10-01 12:40' | 
| 5 | 'Cust2' | '2017-10-01 16:15' | 
| 7 | 'Cust4' | '2017-10-02 08:00' | 
| 8 | 'Cust1' | '2017-10-02 10:45' | 
| 9 | 'Cust3' | '2017-10-02 13:00' | 
| 10 | 'Cust3' | '2017-10-02 14:05' | 
+----+---------+------------+

任何帮助表示赞赏。

SqlKindaGuy

您可以像这样使用LAG来比较时间

declare @myt table (id int,custid nvarchar(50),capturedtime datetime
)

insert into @myt
values
( 1 , 'Cust1', '2017-10-01 10:30'),
( 2 , 'Cust1', '2017-10-01 10:45'),
( 3 , 'Cust1', '2017-10-01 11:35'),
( 4 , 'Cust1', '2017-10-01 12:40'),
( 5 , 'Cust2', '2017-10-01 16:15'),
( 6 , 'Cust2', '2017-10-01 17:00'),
( 7 , 'Cust4', '2017-10-02 08:00'),
( 8 , 'Cust1', '2017-10-02 10:45'),
( 9 , 'Cust3', '2017-10-02 13:00'),
( 10, 'Cust3', '2017-10-02 14:05')

select ID,Custid,CapturedTime from (
select * ,datediff(MINUTE,odtime,capturedtime) mm from (
select *,LAG(capturedtime,1,0) over(partition by custid,cast(capturedtime as date )order by custid,capturedtime) as odtime from @myt
)x
)z where mm >= 60
order by id

结果

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新除SQL Server表中重复记录之外的所有记录

来自分类Dev

如何使用Spark Scala或sql对特定时间间隔内的记录进行分组?

来自分类Dev

如何根据SQL Server中特定时间之间的时间选择记录

来自分类Dev

更新SQL Server表中除重复记录之一以外的所有记录

来自分类Dev

根据时间间隔内的事件计数选择SQL中的记录

来自分类Dev

SQL查询按时间间隔分割记录

来自分类Dev

SQL查询以选择没有重复值的记录

来自分类Dev

sql-查询将提取所有记录,但仅提取重复记录的最新记录

来自分类Dev

SQL查询:如何选择相关表中所有记录都具有特定属性值的记录

来自分类Dev

SQL SELECT在特定时间间隔内从表中重复行

来自分类Dev

sql查询记录选择

来自分类Dev

SQL 查询选择记录

来自分类Dev

如何从SQL删除所有重复的记录

来自分类Dev

sql查询以获取所有具有特定时间戳的用户的交易

来自分类Dev

SQL查询,用于查找某个日期范围内某个特定日期存在的所有记录

来自分类Dev

SQL查询:在特定时间段内收藏的产品

来自分类Dev

SQL(SCCM数据库)中的查询在有重复项时仅选择最新记录

来自分类Dev

SQL查询结果需要返回WHERE子句中的所有记录,甚至重复

来自分类Dev

SQL Server中带有小时和分钟的特定时间范围查询

来自分类Dev

选择特定时间之间的所有记录?

来自分类Dev

选择具有特定时间 SQL 的日期

来自分类Dev

从 SQL Server 中的表中选择除了重复记录

来自分类Dev

SQL查询返回不需要的值选择计数名称姓氏返回所有记录

来自分类Dev

SQL Server查询以选择特定外键/月份组合或主记录(如果当天不存在)的记录

来自分类Dev

如何在SQL Server中选择没有主键的重复记录

来自分类Dev

在SQL Server查询中动态选择记录范围

来自分类Dev

选择在SQL Server查询中具有两种可能性之一的记录

来自分类Dev

SQL Server:自联接查询;仅选择与名字匹配且没有 where 语句的记录

来自分类Dev

SQL Server - 选择日期在目标日期的 5 天内的所有记录

Related 相关文章

  1. 1

    更新除SQL Server表中重复记录之外的所有记录

  2. 2

    如何使用Spark Scala或sql对特定时间间隔内的记录进行分组?

  3. 3

    如何根据SQL Server中特定时间之间的时间选择记录

  4. 4

    更新SQL Server表中除重复记录之一以外的所有记录

  5. 5

    根据时间间隔内的事件计数选择SQL中的记录

  6. 6

    SQL查询按时间间隔分割记录

  7. 7

    SQL查询以选择没有重复值的记录

  8. 8

    sql-查询将提取所有记录,但仅提取重复记录的最新记录

  9. 9

    SQL查询:如何选择相关表中所有记录都具有特定属性值的记录

  10. 10

    SQL SELECT在特定时间间隔内从表中重复行

  11. 11

    sql查询记录选择

  12. 12

    SQL 查询选择记录

  13. 13

    如何从SQL删除所有重复的记录

  14. 14

    sql查询以获取所有具有特定时间戳的用户的交易

  15. 15

    SQL查询,用于查找某个日期范围内某个特定日期存在的所有记录

  16. 16

    SQL查询:在特定时间段内收藏的产品

  17. 17

    SQL(SCCM数据库)中的查询在有重复项时仅选择最新记录

  18. 18

    SQL查询结果需要返回WHERE子句中的所有记录,甚至重复

  19. 19

    SQL Server中带有小时和分钟的特定时间范围查询

  20. 20

    选择特定时间之间的所有记录?

  21. 21

    选择具有特定时间 SQL 的日期

  22. 22

    从 SQL Server 中的表中选择除了重复记录

  23. 23

    SQL查询返回不需要的值选择计数名称姓氏返回所有记录

  24. 24

    SQL Server查询以选择特定外键/月份组合或主记录(如果当天不存在)的记录

  25. 25

    如何在SQL Server中选择没有主键的重复记录

  26. 26

    在SQL Server查询中动态选择记录范围

  27. 27

    选择在SQL Server查询中具有两种可能性之一的记录

  28. 28

    SQL Server:自联接查询;仅选择与名字匹配且没有 where 语句的记录

  29. 29

    SQL Server - 选择日期在目标日期的 5 天内的所有记录

热门标签

归档