我收到错误无法对包含聚合或子查询的表达式执行聚合函数

时间:2016-04-12 09:58:07

标签: sql-server aggregate-functions

SELECT sum(sum(DATEDIFF(DAY,LeaveBreakup.StartDate,LeaveBreakup.EndDate)+1)) AS totalNoOfDays,
       LeaveApplication.Id,
       LeaveBreakup.StartDate,
       LeaveBreakup.EndDate,
       LeaveApplication.ReasonForLeave,
       LeaveApplication.ProcessorComment,
       Team.Name,
       LeaveTypeDetail.Name
FROM LeaveApplication
INNER JOIN Employee ON LeaveApplication.Employee=Employee.Id
INNER JOIN Team ON Employee.Team=Team.Id
INNER JOIN LeaveBreakup ON LeaveApplication.Id=LeaveBreakup.LeaveApplication
INNER JOIN LeaveTypeDetail ON LeaveBreakup.LeaveType=LeaveTypeDetail.LeaveType
WHERE Employee.Team=5
  AND LeaveStatus!=0
  AND LeaveBreakup.StartDate BETWEEN '01-01-2016' AND '01-31-2016'
  AND LeaveBreakup.WhichHalf=0
GROUP BY LeaveApplication.Id,
         LeaveBreakup.StartDate,
         LeaveBreakup.EndDate,
         LeaveApplication.ReasonForLeave,
         LeaveApplication.ProcessorComment,
         Team.Name,
         LeaveTypeDetail.Name
ORDER BY LeaveBreakup.StartDate

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。

SELECT sum(totalNoOfDays) as total,
a.Id,
       a.StartDate,
       a.EndDate,
       a.ReasonForLeave,
       a.ProcessorComment,
       a.Name,
       a.Name
from
select
(
select sum(DATEDIFF(DAY,LeaveBreakup.StartDate,LeaveBreakup.EndDate)+1) AS totalNoOfDays,
       LeaveApplication.Id,
       LeaveBreakup.StartDate,
       LeaveBreakup.EndDate,
       LeaveApplication.ReasonForLeave,
       LeaveApplication.ProcessorComment,
       Team.Name,
       LeaveTypeDetail.Name
FROM LeaveApplication
INNER JOIN Employee ON LeaveApplication.Employee=Employee.Id
INNER JOIN Team ON Employee.Team=Team.Id
INNER JOIN LeaveBreakup ON LeaveApplication.Id=LeaveBreakup.LeaveApplication
INNER JOIN LeaveTypeDetail ON LeaveBreakup.LeaveType=LeaveTypeDetail.LeaveType
WHERE Employee.Team=5
  AND LeaveStatus!=0
  AND LeaveBreakup.StartDate BETWEEN '01-01-2016' AND '01-31-2016'
  AND LeaveBreakup.WhichHalf=0
GROUP BY LeaveApplication.Id,
         LeaveBreakup.StartDate,
         LeaveBreakup.EndDate,
         LeaveApplication.ReasonForLeave,
         LeaveApplication.ProcessorComment,
         Team.Name,
         LeaveTypeDetail.Name
)a
group by
a.Id,
a.StartDate,
a.EndDate,
a.ReasonForLeave,
a.ProcessorComment,
a.Name,
a.Name
ORDER BY a.StartDate