根据时间戳值获取作业的最新条目

时间:2015-07-16 07:56:06

标签: sql sql-server sql-server-2008

我有一个场景如下:

SELECT * 
FROM tab1 
WHERE description LIKE ' %'

我正在尝试显示类似这样的内容

Message_No        Date                        JobNo   
ABC_872           09-06-2015  19:57:12       Job1
ABC_873           09-06-2015  20:57:12       Job1
ABC_874           09-06-2015  21:57:12       Job2
ABC_875           09-06-2015  22:57:12       Job2

即每个职位的最新条目。

我在where子句中尝试了以下条件,

Message_No        Date                        JobNo   
    ABC_873           09-06-2015  20:57:12       Job1
    ABC_875           09-06-2015  22:57:12       Job2

这给我一个像这样的结果

Message_No in (Select max(Message_No) from table group by jobno)

Message_NO是Varchar,Max函数的用法是否正确?(我在消息号上使用max作为消息没有值随时间增加)

请指导

我甚至使用了下面的查询,但是ut给出了所有的行,

Message_No        Date                        JobNo   
ABC_872           09-06-2015  19:57:12       Job1
ABC_874           09-06-2015  21:57:12       Job2

3 个答案:

答案 0 :(得分:0)

ROW_NUMBER可以解决问题:

WITH Cte AS(
    SELECT *,
        RN = ROW_NUMBER() OVER(PARTITION BY JobNo ORDER BY [Date] DESC)
    FROM tbl
)
SELECT *
FROM Cte
WHERE RN = 1

答案 1 :(得分:0)

select t1.Message_No,t1.Date,t1.JobNo   from table as t1 inner join 
(
select Jobno, max(date) as date from table group by jobno
) as t2 on t1.jobno=t2.jobno and t1.date=t2.date

答案 2 :(得分:0)

 <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j-rest</artifactId>
        <version>3.1.2.RELEASE</version>
 </dependency>