我有2张MEMBEN和MEMELIG表,数据如下。
MEMELIG详细信息:
我希望以这样的方式加入两个表格,即它不提供笛卡尔积,而是根据利益效率和利益结束日期的日期选择性数据,因此请考虑上面的例子我们采用id =' 1001& #39;,
下面的图片包含我正在寻找的所有细节。
预期结果详情
请帮助我尝试使用WITH子句但无法继续处理结果。
答案 0 :(得分:0)
在查看示例数据时,您似乎正在寻找类似下面的内容。
SELECT m1.member_id
,lis_eff_dt
,lis_end_dt
,benefit_eff_dt
,benefit_end_dt
FROM memben m1
INNER JOIN memlig m2 ON m1.member_id = m2.member_id
AND m1.member_id = '1001'
AND m1.lis_eff_dt >= m2.benefit_eff_dt
AND m1.lis_end_dt <= m2.benefit_end_dt;
cte版本可以是。
WITH cte (
member_id
,lis_eff_dt
,lis_end_dt
,benefit_eff_dt
,benefit_end_dt
)
AS (
SELECT m1.member_id
,lis_eff_dt
,lis_end_dt
,benefit_eff_dt
,benefit_end_dt
FROM memben m1
INNER JOIN memlig m2 ON m1.member_id = m2.member_id
AND m1.member_id = '1001'
AND m1.lis_eff_dt >= m2.benefit_eff_dt
AND m1.lis_end_dt <= m2.benefit_end_dt
)
SELECT *
FROM cte;
您可以查看演示 here