我的数据
首先,我有一个成员资格表,该成员资格表告知成员何时加入,何时关闭帐户,还有与之相关的唯一ID。
接下来,我有一个索赔表。该表具有唯一的会员ID,索赔成本,服务日期。
现在达到我想要的结果。 如果某个时间段内某人是会员,那么我希望在一个时间段内将所有索赔汇总在一起。
我的过程
我要做的第一件事是创建一个具有两列的新成员资格表。第一列是会员ID。第二列是他们成为会员的每个月.....因此,如果某人是2017年全年的会员,则该会员ID将有12行(201701、201702等)。
。我接下来要做的是获取一个中间索赔表。该索赔表与我提到的第一个索赔表几乎相同。唯一的区别是,我使用与EXTRACT(YEAR FROM)串联的EXTRACT(MONTH FROM service_date)将日期转换为(201701,201702等)日期格式。我有一些WHERE条件,但它们与我的问题无关。
我要做的最后一件事是获得最终索赔表-我想要的结果。这就是我的问题所在。我INNER JOIN中间索赔表,其成员资格表为member_ID = member_id,membership_date = service_date。该表将所有索赔汇总成比按成员密钥更为汇总的形式。有了这种逻辑,我的代码能否获得所有主张?恐怕我一无所获,因为我正在加入成员密钥和月份(201701),如果一个人一个月内有两个索偿要求,也许还没有得到什么。
例如,将1/5/17和1/9/17的索赔都转换为201701。
所有这些步骤都是必需的,因为我必须在最后一步连接到另一个表。但这不值得一提,因为它无关紧要。
会员表
member_ID start_membership end_membership
64321313245 01/01/2019 12/31/9999
45623467234 03/03/2017 12/31/9999
索赔表
member_ID svc_date cost
45623467234 04/03/2017 100
45623467234 04/05/2017 50
然后,理想情况下,我的索赔表中的两个索赔都将显示在SUM(cost)中。我不确定我的联接是否可以这样做。
基本上,我要问的是,如果要联接的两个键不一定唯一,那么联接会获取所有数据吗?
答案 0 :(得分:0)
按照您的意思,它将按照您期望的方式运行,返回所有子行。本质上,它与执行操作相同:
SELECT *
FROM claims
WHERE member_ID = 45623467234
AND CONCAT(EXTRACT(YEAR FROM ),'/',EXTRACT(MONTH FROM service_date)) = '201704'
将返回2行。