select CONVERT(CHAR(10), DATEADD(second, MAX(60), 0), 108)
的stackoverflow站点上的将导致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'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:1)
您必须按其他未使用聚合函数的列进行分组:
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,或者必须对其余列使用group by。
答案 1 :(得分:1)
很可能你不需要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
答案 2 :(得分:0)
如果表存在并且您具有读取表的必要权限,请确保您具有Run table的必要权限并使用如下所示的完整限定表
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