所以这个问题在过去一周左右一直困扰着我。我正在使用一个数据库,这个数据库并没有完全以我喜欢的方式设计,我需要做很多解决方法才能让查询以我想要的方式运行。
基本上,我正在尝试删除由于前一个条目导致的实例而发生的重复条目。为了论证,说客户下订单或发出工作(这只发生一次),但作为交互的结果,创建了一系列其他行来表示,子订单或工作。基本上,所有重复记录应该具有相同的完成时间,所以我想要创建的是一个查询,它将返回具有最早开始时间的记录并忽略具有相同结束时间的所有其他记录。所有这些都发生在同一个表格中。
类似的东西:
{{1}}
答案 0 :(得分:0)
你想要的可能是这样的:
;WITH OrderedTable AS
(
Select ROW_NUMBER() OVER (PARTITION BY endtime ORDER BY starttime) as rn, starttime, endtime, description, entrynumber
From Table
)
Select starttime, endtime, description, entrynumber
FROM OrderedTable
WHERE rn=1
这样做是将具有相同结束时间的所有行分组,按开始时间排序,并为它们提供从1开始并增加的额外“行号”列。如果按rn = 1过滤,则只获得最早的开始时间行,忽略其余行。