T-SQL 代码中将表达式转换为数据类型 int 消息的算术溢出错误

Arithmetic overflow error converting expression to data type int message in T-SQL code

我有以下代码:

     SELECT 
            ehrprg.ReportName 
           ,ehrprg.AnnualGoalServiceMinutes
           ,COUNT(DISTINCT ct.[ClientFK]) AS [UnduplicatedClients]

    FROM 
           [WH].[Fact].[EHRClinicalTransaction] ct
    INNER JOIN [Dimension].EHRProgram ehrprg ON 
                           ct.ProgramFK = ehrprg.WHID

    WHERE
          ehrprg.AnnualGoalServiceMinutes > 0

    GROUP BY
            ehrprg.ReportName 
           ,ehrprg.AnnualGoalServiceMinutes 

    ORDER BY
           ReportName 

结果:

但我需要它在 [ReportName][=43= 中只有一个 'SM NV'(而不是 2)和一个 'SM REACH'(而不是 3)行] 列,总结 [ServiceMinutes]

当我使用 SUM(ehrprg.AnnualGoalServiceMinutes) 时,出现“Arithmetic overflow error converting to datatype int”错误。

然后,我尝试了,SUM(CONVERT(BIGINT, ehrprg.AnnualGoalServiceMinutes)),但得到以下结果:

还是没有分组(没有总结AnnualGoalServiceMinutes),给出了一些数值,看不懂

我的目标是看到而不是-

        ReportName   AnnualGoalServiceMin
        SM NV        197885
        SM NV        348654

        SM REACH     40000 
        SM REACH     80000
        SM REACH     380000

我期望 AnnualGoalServiceMin 的总和:

       ReportName   AnnualGoalServiceMin
       SM NV        546539
       SN REACH     500000           

求求你帮忙

我不知道溢出错误的来源(根据所涉及的整数的大小,它不应该发生),但我认为你在这里需要的是第二级聚合:

WITH cte AS (
    SELECT
        ehrprg.ReportName,
        ehrprg.AnnualGoalServiceMinutes,
        COUNT(DISTINCT ct.[ClientFK]) AS UnduplicatedClients
   FROM [WH].[Fact].[EHRClinicalTransaction] ct
   INNER JOIN [Dimension].EHRProgram ehrprg
        ON ct.ProgramFK = ehrprg.WHID
   WHERE ehrprg.AnnualGoalServiceMinutes > 0
   GROUP BY ehrprg.ReportName, ehrprg.AnnualGoalServiceMinutes
)

SELECT
    ReportName,
    SUM(AnnualGoalServiceMinutes) AS AnnualGoalServiceMinutes,
    SUM(UnduplicatedClients) AS UnduplicatedClients
FROM cte
GROUP BY
    ReportName;