Sql 包含聚合或子查询的表达式上的聚合函数

Sql 包含聚合或子查询的表达式上的聚合函数,sql,tsql,sql-server-2008,Sql,Tsql,Sql Server 2008,我犯了个错误 “无法对包含聚合或子查询的表达式执行聚合函数” 这是哪一行: ,MIN(CASE WHEN DateCompleted IS NULL THEN MIN(DateReceived) ELSE '' END) AS Oldest_Claim 我不确定如何处理这个问题,因为我无法在GROUPBY子句中包含DateCompleted,并获得所需的结果。谢谢 DECLARE @StartDate smalldatetime = '1/1/2000' DECLARE @EndDate s

我犯了个错误

“无法对包含聚合或子查询的表达式执行聚合函数”

这是哪一行:

,MIN(CASE WHEN DateCompleted IS NULL THEN MIN(DateReceived) ELSE '' END) AS Oldest_Claim 
我不确定如何处理这个问题,因为我无法在GROUPBY子句中包含DateCompleted,并获得所需的结果。谢谢

DECLARE @StartDate smalldatetime = '1/1/2000'
DECLARE @EndDate smalldatetime = '3/13/2019'


SELECT 
   CASE 
        WHEN DischargeType  = 'atb' THEN 'Ability to Benefit' 
        WHEN DischargeType  = 'cls' THEN 'Closed School'
        WHEN DischargeType  = 'death' THEN 'Death'
        WHEN DischargeType  = 'dqs' THEN 'Disqualifying Status'
        WHEN DischargeType  = 'fraud' THEN 'Fraud'
        WHEN DischargeType  = 'id theft' THEN 'ID Theft'
        WHEN DischargeType  = 'ineligible borrower' THEN 'Ineligible Borrower'
        WHEN DischargeType  = 'tlf' THEN 'Teacher Loan Forgiveness'
        WHEN DischargeType  = 'uns' THEN 'Unauthorized Signature/Payment'
        WHEN DischargeType  = 'unp' THEN 'Unpaid Refund'
   END AS DischargeType
   ,UPPER(Servicer) AS Servicer    
   ,'' AS Outstanding
   --Intentionally using DateLoaded here instead of DateReceived
   ,SUM(CASE WHEN (DateLoaded > @StartDate AND DateLoaded < DATEADD(dd, 1, @EndDate)) THEN 1 ELSE 0 END) AS Claims_Loaded
   ,SUM(CASE WHEN DateCompleted IS NOT NULL AND Approve = 1 AND DateCompleted > @StartDate AND DateCompleted < DATEADD(dd, 1, @EndDate) THEN 1 ELSE 0 END) AS Claims_Approved
   ,SUM(CASE WHEN DateCompleted IS NOT NULL AND Approve = 0 AND DateCompleted > @StartDate AND DateCompleted < DATEADD(dd, 1, @EndDate) THEN 1 ELSE 0 END) AS Claims_Denied
   ,SUM(CASE WHEN DateCompleted IS NULL THEN 1 ELSE 0 END) AS Claims_Pending
   ,MIN(CASE WHEN DateCompleted IS NULL THEN MIN(DateReceived) ELSE '' END) AS Oldest_Claim
   ,ROUND((SUM(CASE WHEN DateCompleted IS NOT NULL AND Approve = 0 AND DateCompleted > @StartDate AND DateCompleted < DATEADD(dd, 1, @EndDate) THEN 1 ELSE 0 END) / 
   NULLIF(CAST(SUM(CASE WHEN (DateCompleted > @StartDate AND DateCompleted < DATEADD(dd, 1, @EndDate)) THEN 1 ELSE 0 END)AS Float),0) *100),2) AS Percent_Denied 
FROM 
    Claims 
WHERE 
    DischargeType IN ('atb','cls','death','dqs','fraud','id theft','ineligible borrower','tlf','uns','unp')
GROUP BY 
    DischargeType, Servicer
ORDER BY DischargeType, Servicer
DECLARE@StartDate smalldatetime='1/1/2000'
声明@EndDate smalldatetime='2019年3月13日'
挑选
案例
当DischargeType='atb'然后是'Capability to Benefit'
当DischargeType='cls'然后是'Closed School'
当DischargeType=‘死亡’时,则为‘死亡’
当放电类型为'dqs'时,则为'DischargeType'
当DischargeType=‘欺诈’然后是‘欺诈’
当DischargeType='id盗窃'然后是'id盗窃'
当DischargeType=‘不合格借款人’时,则为‘不合格借款人’
当DischargeType='tlf'时,则为'Teacher Loan宽恕'
当DischargeType='uns'然后是'Unauthorized Signature/Payment'
当DischargeType='unp'时,则为'Unpaid return'
作为放电类型结束
,上部(维修工)作为维修工
“,”作为优秀
--故意在此处使用DateLoaded而不是DateReceived
,求和(当(DateLoaded>@StartDate和DateLoaded@StartDate且DateCompleted@StartDate且DateCompleted@StartDate和DateCompleted@StartDate和DateCompleted
必须更改表达式:

最小值(DateCompleted为空时,则为最小值(DateReceived),否则为“”结束)

例如:

MIN(CASE WHEN DateCompleted IS NULL THEN (
  select MIN(DateReceived) from ...
) ELSE '' END)
也许您最好在CTE中包含该子查询