数据表关联问题,特定字段值需要做关联重新取值

u2至x4字段没值,可能是什么原因:

SELECT 

    r.b AS b1,

    r.c AS c1,

    r.d AS d1,

    r.e AS e1,

    r.f AS f1,

    r.g AS g1,

    r.h AS h1,

    r.i AS i1,

    r.j AS j1,

    r.k AS k1,

    r.l AS l1,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.lfy_actual_ytd_display ELSE a.lfy_actual_ytd_display END

        ELSE NULL 

    END AS u2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cfy_budget_ytd_display ELSE a.cfy_budget_ytd_display END

        ELSE NULL 

    END AS v2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cfy_f1_ytd_display ELSE a.cfy_f1_ytd_display END

        ELSE NULL 

    END AS w2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cfy_f2_ytd_display ELSE a.cfy_f2_ytd_display END

        ELSE NULL 

    END AS x2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.nfy_budget_ytd_display ELSE a.nfy_budget_ytd_display END

        ELSE NULL 

    END AS z2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.ly_actual_mtd_display ELSE a.ly_actual_mtd_display END

        ELSE NULL 

    END AS o3,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cy_budget_mtd_display ELSE a.cy_budget_mtd_display END

        ELSE NULL 

    END AS p3,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cy_actual_mtd_display ELSE a.cy_actual_mtd_display END

        ELSE NULL 

    END AS q3,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.ly_actual_ytd_display ELSE a.ly_actual_ytd_display END

        ELSE NULL 

    END AS o4,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cy_budget_ytd_display ELSE a.cy_budget_ytd_display END

        ELSE NULL 

    END AS p4,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cy_actual_ytd_display ELSE a.cy_actual_ytd_display END

        ELSE NULL 

    END AS q4,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfyf1_lfyact_fullyear_display ELSE a.cal_contvar_cfyf1_lfyact_fullyear_display END

        ELSE NULL 

    END AS ai2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfyf1_cfybud_fullyear_display ELSE a.cal_contvar_cfyf1_cfybud_fullyear_display END

        ELSE NULL 

    END AS aj2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfyf2_lfyact_fullyear_display ELSE a.cal_contvar_cfyf2_lfyact_fullyear_display END

        ELSE NULL 

    END AS ak2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfyf2_cfybud_fullyear_display ELSE a.cal_contvar_cfyf2_cfybud_fullyear_display END

        ELSE NULL 

    END AS al2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfyf2_cfyf1_fullyear_display ELSE a.cal_contvar_cfyf2_cfyf1_fullyear_display END

        ELSE NULL 

    END AS am2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_nfybud_cfyf2_fullyear_display ELSE a.cal_contvar_nfybud_cfyf2_fullyear_display END

        ELSE NULL 

    END AS aq2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cfybud_lfybud_fullyear_display ELSE a.cal_contvar_cfybud_lfybud_fullyear_display END

        ELSE NULL 

    END AS ar2,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cyact_lyact_mtd_display ELSE a.cal_contvar_cyact_lyact_mtd_display END

        ELSE NULL 

    END AS w3,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cyact_cybud_mtd_display ELSE a.cal_contvar_cyact_cybud_mtd_display END

        ELSE NULL 

    END AS x3,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cyact_lyact_ytd_display ELSE a.cal_contvar_cyact_lyact_ytd_display END

        ELSE NULL 

    END AS w4,

    CASE 

        WHEN r.j::text != '2' THEN 

            CASE WHEN r.g = 'Non-allocated structure costs' THEN b.cal_contvar_cyact_cybud_ytd_display ELSE a.cal_contvar_cyact_cybud_ytd_display END

        ELSE NULL 

    END AS x4

FROM raw_finerpt_config_vprpt_displaysetting r 

LEFT JOIN apv_d4f_vw_trans_vmr_vm0001_0800800_op_ori_dis a 

    ON a.vmr_code_entity = r.c 

    AND a.vmr_code_kfi = 'Vec_15'

    AND a.cy_cal_vmr_datep_yyyy_mm_str = '${ymonth}'

    AND a.vmr_type_data = '${vmr_type_data}'

    AND a.config_accesscode LIKE '%${config_accesscode}%'

    AND a.type_displaycurr = '${type_displaycurr}'

    AND a.cmentity_type_buzunit = '${cmentity_type_buzunit}'

LEFT JOIN (

    SELECT

        t1.cmentity_type_buzunit,

        t1.vmr_type_data,

        t1.type_displaycurr,

        t1.cy_cal_vmr_datep_yyyy_mm_str,

        SUM(t1.lfy_actual_ytd_display) AS lfy_actual_ytd_display,

        SUM(t1.cfy_budget_ytd_display) AS cfy_budget_ytd_display,

        SUM(t1.cfy_f1_ytd_display) AS cfy_f1_ytd_display,

        SUM(t1.cfy_f2_ytd_display) AS cfy_f2_ytd_display,

        SUM(t1.nfy_budget_ytd_display) AS nfy_budget_ytd_display,

        SUM(t1.ly_actual_mtd_display) AS ly_actual_mtd_display,

        SUM(t1.cy_budget_mtd_display) AS cy_budget_mtd_display,

        SUM(t1.cy_actual_mtd_display) AS cy_actual_mtd_display,

        SUM(t1.ly_actual_ytd_display) AS ly_actual_ytd_display,

        SUM(t1.cy_budget_ytd_display) AS cy_budget_ytd_display,

        SUM(t1.cy_actual_ytd_display) AS cy_actual_ytd_display,

        SUM(t1.cal_contvar_cfyf1_lfyact_fullyear_display) AS cal_contvar_cfyf1_lfyact_fullyear_display,

        SUM(t1.cal_contvar_cfyf1_cfybud_fullyear_display) AS cal_contvar_cfyf1_cfybud_fullyear_display,

        SUM(t1.cal_contvar_cfyf2_lfyact_fullyear_display) AS cal_contvar_cfyf2_lfyact_fullyear_display,

        SUM(t1.cal_contvar_cfyf2_cfybud_fullyear_display) AS cal_contvar_cfyf2_cfybud_fullyear_display,

        SUM(t1.cal_contvar_cfyf2_cfyf1_fullyear_display) AS cal_contvar_cfyf2_cfyf1_fullyear_display,

        SUM(t1.cal_contvar_nfybud_cfyf2_fullyear_display) AS cal_contvar_nfybud_cfyf2_fullyear_display,

        SUM(t1.cal_contvar_cfybud_lfybud_fullyear_display) AS cal_contvar_cfybud_lfybud_fullyear_display,

        SUM(t1.cal_contvar_cyact_lyact_mtd_display) AS cal_contvar_cyact_lyact_mtd_display,

        SUM(t1.cal_contvar_cyact_cybud_mtd_display) AS cal_contvar_cyact_cybud_mtd_display,

        SUM(t1.cal_contvar_cyact_lyact_ytd_display) AS cal_contvar_cyact_lyact_ytd_display,

        SUM(t1.cal_contvar_cyact_cybud_ytd_display) AS cal_contvar_cyact_cybud_ytd_display

    FROM apv_d4f_vw_trans_vmr_vm0001_0800800_op_ori_dis AS t1

    WHERE (t1.vmr_code_kfi = 'Vec_11' AND t1.cmentity_type_buz <> 'Holding')

        OR (t1.vmr_code_kfi = 'Vec_14' AND t1.cmentity_type_buz = 'Holding')

    GROUP BY

        t1.cmentity_type_buzunit,

        t1.vmr_type_data,

        t1.type_displaycurr,

        t1.cy_cal_vmr_datep_yyyy_mm_str

) b ON b.cmentity_type_buzunit = '${cmentity_type_buzunit}'

    AND b.vmr_type_data = '${vmr_type_data}'

    AND b.type_displaycurr = '${type_displaycurr}'

    AND b.cy_cal_vmr_datep_yyyy_mm_str = '${ymonth}'

WHERE r.k = 'Ctrl EBITDA'

    AND r.j::text != '0' 

    AND r.year = LEFT('${ymonth}', 4)

    AND (

        (r.j::text != '2') 

        OR 

        (r.j::text = '2' AND r.b LIKE '%${config_accesscode}%')

    )

ORDER BY l1

SQL 帆软用户Dcu3auzqkx 发布于 5 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
取消
  • 1关注人数
  • 0浏览人数
  • 最后回答于:5 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部