我定义了一个用户定义的标量函数,将时间转换为第二个:
Create function [dbo].[TIME_TO_SEC](@inputTime time)
returns INT
As
Begin
DECLARE @secDiff INT = datediff(second, '00:00:00', @inputTime)
return @secDiff;
end
上面的函数工作正常,但当我尝试在聚合函数内部调用时,请说' SUM'
SELECT emp.EmpId
,sum(dbo.TIME_TO_SEC(au.BirthDateTime)) AS EmployeeBirthDay
FROM Employee emp
我得到以下错误:
专栏'员工.EmpId'在选择列表中无效,因为它是 不包含在聚合函数或GROUP BY子句中。
P.S。请注意我尝试在上面的用户定义函数中复制MySQL TIME_TO_SEC
功能。
答案 0 :(得分:0)
添加分组依据:
SELECT emp.EmpId
,sum(dbo.TIME_TO_SEC(au.BirthDateTime)) AS EmployeeBirthDay
FROM Employee emp
GROUP BY Emp.EmpID
答案 1 :(得分:0)
您需要将EmpId放在Group By子句中:
SELECT emp.EmpId
,sum(dbo.TIME_TO_SEC(au.BirthDateTime)) AS EmployeeBirthDay
FROM Employee emp
GROUP BY emp.EmpID