sql-server - SQL Server : deleting records with similar time

标签 sql-server

我想删除具有相同(或相似)时间的记录。这是示例数据:

ID | Name | DateTime
---+------+--------------------
1  | Joe  | 2017-03-01 11:33:13
1  | Joe  | 2017-03-01 11:33:14
1  | Joe  | 2017-03-01 11:33:15
1  | Joe  | 2017-03-01 11:55:30
2  | John | 2017-02-15 08:55:48
2  | John | 2017-02-15 08:55:49
2  | John | 2017-02-15 08:56:30
2  | John | 2017-02-15 10:15:40

删除后:

ID | Name | DateTime
---+------+---------------------
1  | Joe  | 2017-03-01 11:33:13
1  | Joe  | 2017-03-01 11:55:30
2  | John | 2017-02-15 08:55:48
2  | John | 2017-02-15 10:15:40

删除用户的所有相似时间(例如 10 分钟)

请帮我看看该怎么做。谢谢

最佳答案

CREATE TABLE #TABLE1
    ([ID] INT, [NAME] VARCHAR(4), [DATETIME] DATETIME)

INSERT INTO #TABLE1
    ([ID], [NAME], [DATETIME])
VALUES
    (1, 'JOE', '2017-03-01 11:33:13'),
    (1, 'JOE', '2017-03-01 11:33:14'),
    (1, 'JOE', '2017-03-01 11:33:15'),
    (1, 'JOE', '2017-03-01 11:55:30'),
    (2, 'JOHN', '2017-02-15 08:55:48'),
    (2, 'JOHN', '2017-02-15 08:55:49'),
    (2, 'JOHN', '2017-02-15 08:56:30'),
    (2, 'JOHN', '2017-02-15 10:15:40')

SELECT  A.ID,A.NAME,A.[DATETIME] FROM  
(SELECT *,ROW_NUMBER() OVER( PARTITION BY (  CAST(CONVERT(CHAR(16), [DATETIME],113) AS DATETIME)) ORDER BY [NAME]) AS RN FROM #TABLE1
)A
WHERE RN=1 ORDER BY ID 

输出

ID  NAME        DATETIME
1   Joe        2017-03-01 11:33:13.000
1   Joe        2017-03-01 11:55:30.000
2   John       2017-02-15 08:55:48.000
2   John       2017-02-15 10:15:40.000

关于sql-server - SQL Server : deleting records with similar time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132479/

相关文章:

SQL 计数(*) 性能

c# - 返回插入的 IDENT_CURRENT

c# - 需要重启IIS才能获取sql连接

sql-server - 如何保护 Vb6 应用程序和 mssql 服务器之间的连接?

sql-server - SQL 服务器 : why are sizes of different backups the same?

c# - Linq 查询从多个表中获取计数

c# - 为什么代码首先要创建索引列?

sql-server - 事务日志驱动器是否需要与数据库驱动器一样快?

sql-server - 实现键、索引、约束的命名标准

sql-server - Excel VBA 错误 End with with out with?