我在这样保存的表中有记录:
ID | PID | Param | Param Value | Date time |
---|-------|--------|-------------|------------------------
1 | 195 |Param 1 | 12 |2015-11-25 17:41:05.000
2 | 211 |Param 2 | 13 |2015-11-25 17:41:05.000
3 | 195 |Param 1 | 14 |2015-11-25 17:41:35.000
4 | 211 |Param 2 | 15 |2015-11-25 17:41:35.000
5 | 195 |Param 1 | 16 |2015-11-25 17:42:05.000
6 | 211 |Param 2 | 17 |2015-11-25 17:42:05.000
7 | 195 |Param 1 | 16 |2015-11-25 17:42:35.000
8 | 211 |Param 2 | 17 |2015-11-25 17:42:35.000
每个参数的数据每分钟多次出现,我想找到每分钟最新的每个参数的数据,也就是说: 假设参数1的数据在2015-11-25 17:41:00.000和2015-11-25 17:42:00.000之间出现3次,所以我想要第三次出现的数据,这需要为每个参数完成。
所以我按照上述条目设置的结果数据应该是:
ID | PID | Param | Param Value | Date time |
-----------------+----------------------------------------
3 | 195 |Param 1 | 14 |2015-11-25 17:41:35.000
4 | 211 |Param 2 | 15 |2015-11-25 17:41:35.000
7 | 195 |Param 1 | 16 |2015-11-25 17:42:35.000
8 | 211 |Param 2 | 17 |2015-11-25 17:42:35.000
我尝试过分区和填充分组......但它似乎没有用。在这方面的任何帮助将不胜感激。
由于
答案 0 :(得分:2)
使用Datepart
的窗口功能和分区Select *
From (
Select *
,RN = Row_Number() over (Partition By PID,Param ,datepart(MI,[Date time]) Order by [Date time] Desc)
From YourTable
) A
Where RN=1
返回
ID PID Param Param Value Date time RN
3 195 Param 1 14 2015-11-25 17:41:35.000 1
7 195 Param 1 16 2015-11-25 17:42:35.000 1
4 211 Param 2 15 2015-11-25 17:41:35.000 1
8 211 Param 2 17 2015-11-25 17:42:35.000 1