Sql server SQL Server 2014:最大值和有查询

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)

这里是自学成才的新手

我试图在EmplUDABreakdown表中最晚日期的52周内返回一组值

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。非常感谢。