Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用相同外键求和INT值_Sql_Sql Server_Select_Sum - Fatal编程技术网

Sql 使用相同外键求和INT值

Sql 使用相同外键求和INT值,sql,sql-server,select,sum,Sql,Sql Server,Select,Sum,我需要采取下表,并显示2018年日期的每项索赔的总伤害付款金额。。。我使用以下代码,但无法将ClaimID1作为单个值输出(与三个值相反) 更新-我有一个类似的表“propertycaimpmt”,我正在尝试将这些表连接在一起,希望得到类似的结果。我想在一列中列出索赔,在另一列中列出索赔总额,但必须是2018年的索赔。我尝试了一个并集,但它从一个表中删除了一个值,而没有对另一个表中的不同值求和 Select ClaimID, SUM(PropPaymentAmt) as TotalClaim

我需要采取下表,并显示2018年日期的每项索赔的总伤害付款金额。。。我使用以下代码,但无法将ClaimID1作为单个值输出(与三个值相反)

更新-我有一个类似的表“propertycaimpmt”,我正在尝试将这些表连接在一起,希望得到类似的结果。我想在一列中列出索赔,在另一列中列出索赔总额,但必须是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;
选择ClaimID,SUM(PropPaymentAmt)作为TotalClaims2018
来自PropertyClaimPmt
其中PropPaymentDate>='2017-12-30'和PropPaymentDate='2017-12-30'以及InjuryPaymentDate<'2018-12-29'
按ClaimID分组;

您应该只按
ClaimID
进行分组:

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

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

我通常将聚合键列放在
选择
中的第一位,然后是聚合表达式:

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;
选择ClaimID,SUM(InjuryPaymentAmt)作为TotalClaims2018
来自PersonalInjuryPmt
其中InjuryPaymentDate>='2017-12-30'和
伤害付款日期<'2018-12-29'
按ClaimID分组;

即使
InjuryPaymentDate
有时间组件,这也会起作用

将InjuryPaymentDate从组中删除?谢谢-这就是我要找的。
Select ClaimID, SUM(InjuryPaymentAmt) as TotalClaims2018
from PersonalInjuryPmt
where InjuryPaymentDate >= '2017-12-30' and 
      InjuryPaymentDate < '2018-12-29' 
group by ClaimID;