Sql server SQL Server 2014:最大值和有查询
这里是自学成才的新手 我试图在EmplUDABreakdown表中最晚日期的52周内返回一组值Sql server SQL Server 2014:最大值和有查询,sql-server,Sql Server,这里是自学成才的新手 我试图在EmplUDABreakdown表中最晚日期的52周内返回一组值 DECLARE @AVGEarn TABLE ( EmployeeCode VARCHAR(12) ,AVGEarn DECIMAL(12,2) ,Weeks INT ) INSERT INTO @AVGEarn SELECT E.EmployeeCode, (SELECT SUM(EMPL.Amount)
DECLARE @AVGEarn TABLE
(
EmployeeCode VARCHAR(12)
,AVGEarn DECIMAL(12,2)
,Weeks INT
)
INSERT INTO @AVGEarn
SELECT
E.EmployeeCode,
(SELECT SUM(EMPL.Amount)
FROM EMPLUDABreakdown EMPL
WHERE EMPL.EmployeeCode = E.EmployeeCode
AND EMPL.UserDefinedAccumulatorCode = 'AVGEARN'
AND DATE <= MAX(EMPL.[Date])
AND DATE >= DATEADD(WEEK,-52,MAX(EMPL.[Date]))) AS AVGEarn,
(SELECT COUNT(DISTINCT EMPL.[Date])
FROM EMPLUDABreakdown EMPL
WHERE EMPL.EmployeeCode = E.EmployeeCode
AND EMPL.UserDefinedAccumulatorCode = 'AVGHRS'
AND DATE <= MAX(EMPL.[Date])
AND DATE >= DATEADD(WEEK,-52,MAX(EMPL.[Date])+1)) AS Weeks
FROM
Employee E
WHERE
E.TerminationDate IS NULL
ORDER BY
E.EmployeeCode
SELECT * FROM @AVGEarn
我得到一个错误:
Msg 147,15级,状态1,第15行
聚合不能出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且被聚合的列是外部引用
我改成
(SELECT SUM(EMPL.Amount)
FROM EMPLUDABreakdown EMPL
WHERE EMPL.EmployeeCode = E.EmployeeCode
AND EMPL.UserDefinedAccumulatorCode = 'AVGEARN'
GROUP BY EMPL.[Date]
HAVING DATE <= MAX(EMPL.[Date]) AND DATE >= DATEADD(WEEK,-52,MAX(EMPL.[Date]))) AS AVGEarn
并得到以下信息
Msg 512,16级,状态1,第8行
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时
您的查询返回多行,因为您正在对其进行分组。你到底想要什么?一行合计,几行分组?有最大日期的总和行?您好。实际上,我希望返回一行,其中包含最近一周的最后52周内的SumEnearning和COUNTWeeks。非常感谢。