【问题标题】:Sum INT values with the same foreign key对具有相同外键的 INT 值求和
【发布时间】:2018-08-18 12:05:14
【问题描述】:

我需要使用下表并显示 2018 年日期每个 ClaimID 的总 InjuryPaymentAmt...我使用以下代码,但我无法将 ClaimID1 输出为单个值(而不是三个)

Select SUM(InjuryPaymentAmt) as TotalClaims2018, ClaimID
from PersonalInjuryPmt
where InjuryPaymentDate between '2017-12-30' and '2018-12-28' 
group by InjuryPaymentDate, ClaimID;

更新 - 我有一个类似的表格“PropertyClaimPmt”,我正在尝试将这些表格连接在一起,希望得到类似的结果。我想要一个列中的 ClaimIDs 和另一列中的索赔总数 - 但它们需要是 2018 年的。我尝试了一个联合,但它从一个表中删除了一个值,而不是对另一个表中的不同值求和.

Select ClaimID, SUM(PropPaymentAmt) as TotalClaims2018 
from PropertyClaimPmt
    where PropPaymentDate >= '2017-12-30' and PropPaymentDate <='2018-12-28'
        group by ClaimID
Union
Select ClaimID, SUM(InjuryPaymentAmt) as TotalClaims2018
    from PersonalInjuryPmt
        where InjuryPaymentDate >= '2017-12-30' and InjuryPaymentDate < '2018-12-29' 
            group by ClaimID;

Capture2 Output2

【问题讨论】:

  • 将 InjuryPaymentDate 从组中删除?

标签: sql sql-server select sum


【解决方案1】:

GROUP BY 指定结果集中的行。 group by 键的每个唯一组合(存在于数据中)都在结果集中,每行一个组合。因为您希望每个 ClaimId 有一行,所以那应该是 GROUP BY 中的唯一列。

我通常把聚合键列放在SELECT的前面,后面是聚合表达式:

Select ClaimID, SUM(InjuryPaymentAmt) as TotalClaims2018
from PersonalInjuryPmt
where InjuryPaymentDate between '2017-12-30' and '2018-12-28' 
group by ClaimID;

由于有和没有时间组件的日期之间的混淆,将日期逻辑编写为更安全:

Select ClaimID, SUM(InjuryPaymentAmt) as TotalClaims2018
from PersonalInjuryPmt
where InjuryPaymentDate >= '2017-12-30' and 
      InjuryPaymentDate < '2018-12-29' 
group by ClaimID;

即使InjuryPaymentDate 有时间组件,这也可以工作。

【讨论】:

  • 谢谢 - 这正是我要找的。​​span>
【解决方案2】:

您应该只按ClaimID 分组:

SELECT   SUM(InjuryPaymentAmt) as TotalClaims2018, ClaimID
FROM     PersonalInjuryPmt
WHERE    YEAR(InjuryPaymentDate) = 2018
GROUP BY ClaimID;

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    相关资源
    最近更新 更多