Tsql 如何仅从表中选择最新的条目
我在MS SQL Server 2008数据库中有一个包含如下作业的表:Tsql 如何仅从表中选择最新的条目,tsql,Tsql,我在MS SQL Server 2008数据库中有一个包含如下作业的表: J_ID J_Name J_ReadDate J_I_ID ````````````````````````````````````````````````````````` 01 Job1 2011-06-26 01:00:12.153 1 02 Job2 2011-06-25 01:00:07.10
J_ID J_Name J_ReadDate J_I_ID
`````````````````````````````````````````````````````````
01 Job1 2011-06-26 01:00:12.153 1
02 Job2 2011-06-25 01:00:07.103 1
03 Job3 2011-06-25 01:00:07.103 2
04 Job4 2011-06-25 01:00:07.103 3
05 Job1 2011-06-26 01:00:07.103 1
06 Job2 2011-06-26 01:00:08.103 2
07 Job1 2011-06-26 01:00:08.103 2
现在我只想选择最新的作业,不管条目有多旧。因此,在我的示例中,它希望得到以下结果(由J_ReadDate DESC排序):
我怎样才能做到这一点?我不能说,条目之间的时差总是一天。下面的内容将得到您想要的
SELECT J_ID, J_Name, J_ReadDate, J_I_ID
FROM (
SELECT J_ID, J_Name, J_ReadDate, J_I_ID,
ROW_NUMBER() OVER (PARTITION BY J_Name ORDER BY J_ReadDate DESC) AS RN
FROM jobs
) J
WHERE J.RN = 1
ORDER BY J_ReadDate DESC
下面的内容将得到你想要的
SELECT J_ID, J_Name, J_ReadDate, J_I_ID
FROM (
SELECT J_ID, J_Name, J_ReadDate, J_I_ID,
ROW_NUMBER() OVER (PARTITION BY J_Name ORDER BY J_ReadDate DESC) AS RN
FROM jobs
) J
WHERE J.RN = 1
ORDER BY J_ReadDate DESC
谢谢,但是我忘了提一件事。。。J_名称不是唯一的,因此仅决定此列是不够的。在我的情况下,J_Name和J_I_ID的组合是唯一的(与时间一起),我可以简单地将J_I_ID添加到分割子句中吗?@Fender:你可能已经自己决定了,但为了以后阅读这篇文章的人:是的,你可以。谢谢,但我忘了提到一些东西。。。J_名称不是唯一的,因此仅决定此列是不够的。在我的例子中,J_Name和J_I_ID的组合是唯一的(与时间一起),我可以简单地将J_I_ID添加到分割子句中吗?@Fender:您可能已经自己决定了,但为了以后阅读本文的读者:是的,您可以。