Sql server SQL Server 2008 R2:基于另一个表的值计算表的列

Sql server SQL Server 2008 R2:基于另一个表的值计算表的列,sql-server,Sql Server,经过数小时的努力,我终于决定向SQLServer2008R2方面的专家寻求帮助 我的问题如下:数据库中有两个表 第一个(表a)记录了属于某个客户id的所有策略。它们都是年度保单,因此每个保单都有一个开始日期和一个到期日期。由于是定期人寿保险单,保险金额不断减少,因此每次续保后,保险金额都会减少。有些客户有不止一项政策,这些政策是我的目标 第二个表(table_b)包含相同的customer_id,关于索赔的数据(amount\u paid和date\u of\u event是我感兴趣的列) 现在

经过数小时的努力,我终于决定向SQLServer2008R2方面的专家寻求帮助

我的问题如下:数据库中有两个表

第一个(
表a
)记录了属于某个
客户id
的所有策略。它们都是年度保单,因此每个保单都有一个
开始日期
和一个
到期日期
。由于是定期人寿保险单,保险金额不断减少,因此每次续保后,保险金额都会减少。有些客户有不止一项政策,这些政策是我的目标

第二个表(
table_b
)包含相同的
customer_id
,关于索赔的数据(
amount\u paid
date\u of\u event
是我感兴趣的列)

现在,我想检查,在索赔的情况下,是否正确考虑了在事件发生之日生效的所有保单,如果其中一些保单未被考虑,则计算未支付的金额(在索赔的
事件日期
对某个
客户id
有效的所有保险金额之和与实际支付金额之间的差额)

有效保险金额是指与客户的所有保单相关的金额

inception_date < date_of_event 
and datediff(day, inception_date, date_of_event) < 365
inception\u date
我想获得每个客户在活动日期有效的总金额,即为该索赔支付的总金额

我希望我能清楚地解释我的任务,如果有人能帮助我,我将非常感激

提前谢谢

编辑:数据结构如下:

这就是我想要的


很抱歉链接了图片,但我在格式化方面真的很糟糕。如果您想计算
表B中
每个
customerid-eventdate
的数据,请尝试以下操作

;WITH temp AS
(
   SELECT b.CustomerId, b.date_of_event, sum(Amount_Paid) AS Total_Amount_Paid
   FROM tableB b 
   GROUP BY b.CustomerId, b.date_of_event
)
SELECT t.CustomerId,t.date_of_event, sum(a.Amount_Insured) AS Total_Amount_due, t.Total_Amount_Paid
FROM temp t
INNER JOIN table_A a ON a.Customer_Id = t.CustomerId
AND a.inception_date BETWEEN dateadd(year, -1 , t.date_of_event ) AND t.date_of_event
GROUP BY t.CustomerId, t.date_of_event, t.Total_Amount_Paid

如果您添加数据结构、样本数据和所需结果,则更清楚。添加的数据结构和预期结果@TriVI已尝试了您的解决方案,但我遇到了以下错误:Msg 8120,级别16,状态1,第7行“temp.Total_Amount_Paid”列在选择列表中无效,因为它不包含在任何聚合函数中在或GROUP BY子句上。@TriVoh,然后在GROUP BY列中添加
t.Total\u Amount\u Paid
,标记为已解决,因为它工作正常。非常感谢