SQL 查询迄今为止的秒数 (Ssms12)

SQL query seconds to date (Ssms12)

在 fount Thad 的 Whosebug 站点上 select CONVERT(CHAR(10), DATEADD(second, MAX(60), 0), 108) 将导致 00:01:00(这是真的 btw :-))

现在我想将其集成到以下查询中(对于 Ssms12):

SELECT Run.TaskName,history.runtime
,CONVERT(CHAR(10), DATEADD(second, MAX(history.runtime), 0), 108)

FROM dbo.history
INNER JOIN Run
ON dbo.history.TaskID=Run.TaskID

无论我尝试什么,我都无法在上面的示例中使用它,有人知道如何解决这个问题吗?

错误: 列 'Run.TaskName' 在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。

您必须按未使用聚合函数的其他列进行分组:

SELECT Run.TaskName,history.runtime,
   CONVERT(CHAR(10), DATEADD(second, history.runtime, 0), 108)
FROM dbo.history
INNER JOIN Run ON dbo.history.TaskID=Run.TaskID

您在运行时使用 MAX,因此您可以这样做:

SELECT Run.TaskName,MAX(history.runtime) runtime,
    CONVERT(CHAR(10), DATEADD(second, MAX(history.runtime), 0), 108)
FROM dbo.history
INNER JOIN Run ON dbo.history.TaskID=Run.TaskID
GROUP BY Run.TaskName

这意味着您要么必须从运行时删除 MAX,要么必须对其余列使用分组依据。

确保您对 运行 table 具有必要的权限,如果 table 存在且您具有读取该文件的必要权限,则使用下面的完全限定 table tables

SELECT Run.TaskName,history.runtime
      ,CONVERT(CHAR(10), DATEADD(second, MAX(history.runtime), 0), 108)
FROM dbo.history 
INNER JOIN dbo.Run
    ON dbo.history.TaskID=dbo.Run.TaskID

您很可能不需要 MAX。 select CONVERT(CHAR(10), DATEADD(second, 60, 0), 108) 可以,所以

SELECT Run.TaskName,history.runtime
      ,CONVERT(CHAR(10), DATEADD(second, history.runtime, 0), 108)
FROM dbo.history 
INNER JOIN dbo.Run
    ON dbo.history.TaskID=dbo.Run.TaskID