从具有特定列数据的行返回最高DATETIME

时间:2015-06-02 19:35:36

标签: sql sql-server greatest-n-per-group

我正在尝试为特定的请求代码选择最高的DATETIME:

enter image description here

这是我使用的查询:

SELECT SubmitTime 
FROM   [QTRAXAdmin].[qt_request] 
WHERE  SubmitTime IN (SELECT Max(SubmitTime) 
                      FROM   [QTRAXAdmin].[qt_request]) 
       AND requestcode = 'FOREMAN'; 

我的问题是上面的查询没有返回任何内容。我认为它所做的是它发现SubmitTime列中最高的DATETIME不属于FOREMAN请求代码。

如何让它返回特定请求代码的最新SubmitTime?

4 个答案:

答案 0 :(得分:2)

只需将requestcode = 'FOREMAN'谓词放在子查询的WHERE子句中:

SELECT SubmitTime 
FROM   [QTRAXAdmin].[qt_request] 
WHERE  SubmitTime IN (SELECT Max(SubmitTime) 
                      FROM   [QTRAXAdmin].[qt_request]
                      WHERE requestcode = 'FOREMAN') 
       AND requestcode = 'FOREMAN';

这样,子查询将返回此特定MAX(SubmitTime)的{​​{1}}。

正如我现在所看到的那样,在第二次看之后,你根本不需要子查询:

requestcode

如果只想获得SELECT Max(SubmitTime) FROM [QTRAXAdmin].[qt_request] WHERE requestcode = 'FOREMAN' 的{​​{1}},这就足够了。

答案 1 :(得分:2)

我认为你可以简单地选择这样,当然这些时间不会在requestcode内重复:

SELECT max(SubmitTime)
FROM   [QTRAXAdmin].[qt_request] 
WHERE requestcode = 'FOREMAN'; 

答案 2 :(得分:0)

如果您只是在寻找最新的SubmitTime,您可以这样做:

SELECT TOP 1 SubmitTime 
FROM   [QTRAXAdmin].[qt_request] 
WHERE  requestcode = 'FOREMAN'
ORDER BY SubmitTime DESC; 

答案 3 :(得分:0)

使用此:

SELECT *FROM   [QTRAXAdmin].[qt_request] 
WHERE SubmitTime = (SELECT max(SubmitTime) FROM [QTRAXAdmin].[qt_request] WHERE requestcode = 'FOREMAN')