每天在特定时间范围内获取最新行

时间:2015-11-18 07:45:41

标签: sql sql-server

我有一个使用'with CTE'功能的现有查询。此查询返回我想要的结果,但是,查询还会在任何给定日期的特定时间范围内返回重复值。举个例子,查询返回如下结果:

rn | NAME     MACHINE   SUPERVISOR    LAST_UPDATE
1  | NAME_1   T_001     SUP_1         2015-10-14 09:55:26.637
2  | NAME_2   T_002     SUP_2         2015-10-14 11:54:07.087
3  | NAME_2   T_002     SUP_3         2015-10-14 12:02:31.663 
4  | NAME_3   T_003     SUP_4         2015-10-14 22:53:28.253 
5  | NAME_4   T_005     SUP_4         2015-10-14 09:55:47.293
6  | NAME_3   T_003     SUP_3         2015-10-15 01:59:00.000
7  | NAME_3   T_003     SUP_3         2015-10-15 10:19:00.000

现在,这是我需要实现的规则:我需要在9 AM-9PM和9 PM-9AM时间范围内获取具有相同名称和机器的最新行。这是我需要实现的结果:

rn | NAME     MACHINE   SUPERVISOR    LAST_UPDATE
1  | NAME_1   T_001     SUP_1         2015-10-14 09:55:26.637
3  | NAME_2   T_002     SUP_3         2015-10-14 12:02:31.663  
5  | NAME_4   T_005     SUP_4         2015-10-14 09:55:47.293
6  | NAME_3   T_003     SUP_3         2015-10-15 01:59:00.000
7  | NAME_3   T_003     SUP_3         2015-10-15 10:19:00.000

请注意第2行已被删除,因为第2行和第3行具有相同的名称和机器,并且因为它们在9 AM-9PM时间范围内,所以我只需要最新版本的第3行。

查看第4,6和7行。这些行具有相同的名称和机器,但只有第4行和第6行是9 PM-9AM时间范围内的行。所以只保留了第6行。第7行未受影响,因为它在其自己的时间跨度上是唯一的(名称和机器)。

如果你能帮助我,我真的很感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

panel.clear();
相关问题