Tsql 需要一些SQL存储过程帮助-加入

Tsql 需要一些SQL存储过程帮助-加入,tsql,Tsql,因此,我的程序有以下部分: SELECT com_contact.rc_name_full as CreatedBy, capComponent.cm_strike as CapStrike, floorComponent.cm_strike as FloorStrike, tq_nominal_notional as Notional, maxComponent.cm_effective_dt as Effecti

因此,我的程序有以下部分:

SELECT
        com_contact.rc_name_full as CreatedBy,
        capComponent.cm_strike as CapStrike,
        floorComponent.cm_strike as FloorStrike,
        tq_nominal_notional as Notional,
        maxComponent.cm_effective_dt as EffectiveDate,
        maxComponent.cm_maturity_dt as MaturityDate,
        CAST(CAST(DATEDIFF(mm,maxComponent.cm_effective_dt,maxComponent.cm_maturity_dt) as decimal(9,2))/12 as decimal(9,2)) as term,
        (
            CASE WHEN se_amort_term_mnth IS NOT NULL THEN se_amort_term_mnth / 12
            ELSE CAST(CAST(DATEDIFF(mm,
                ISNULL(cmam_amortization_start_dt, maxComponent.cm_effective_dt),
                cmam_amortization_end_dt) as decimal(9,2))/12 as decimal(9,2))
            END
        ) AS AmortTermYears,
        tq_dd_product as Product,
        dh_key_rate as KeyRate,
        dh_pv01 as PV01,
        dh_val_time_stamp as RateTimeStamp,
        re_bnk_le.re_company_name as Company,
        rc_contact_id as UserId,
        stp_name as NickName,
        '' as project,
        '' as Borrower,
        '' as Lender,
        '' as AdditionalInfo,
        CASE WHEN tpm_pd_permission_id = 85 THEN 'LLH' WHEN tpm_pd_permission_id = 86 THEN 'ALM' ELSE '' END as Permission,
        tr_transaction_id as TransactionId,
        NULL as IndicationId

    FROM cfo_transaction
作为项目,我们现在必须实际更改以返回数据

FROM旁边名为cfo_transaction的表上有一个名为tr_transaction_id的id。我们还有一个名为com_project_transaction_link的表,它使用两个名为:

pt_tr_transaction_id和pt_pj_project_id,然后我们有一个包含所有名为com_project的项目的表,它有一个pj_project_id和一个pj_project_名称

目标:从projects表返回pj_project_名称,在该表中它与正在提取的事务相链接

我真的不知道怎么做


谢谢

只需向查询的另一个表添加第二个联接即可

select 
    yourfields,
    p.pj_project_name as project
FROM cfo_transaction t
join com_project_transaction_link tl
  on t.tr_transaction_id = tl.pt_tr_transaction_id
join com_project p
  on tl.pt_pj_project_id = p.pj_project_id 
试试这个:

SELECT
        com_contact.rc_name_full as CreatedBy,
        capComponent.cm_strike as CapStrike,
        floorComponent.cm_strike as FloorStrike,
        tq_nominal_notional as Notional,
        maxComponent.cm_effective_dt as EffectiveDate,
        maxComponent.cm_maturity_dt as MaturityDate,
        CAST(CAST(DATEDIFF(mm,maxComponent.cm_effective_dt,maxComponent.cm_maturity_dt) as decimal(9,2))/12 as decimal(9,2)) as term,
        (
            CASE WHEN se_amort_term_mnth IS NOT NULL THEN se_amort_term_mnth / 12
            ELSE CAST(CAST(DATEDIFF(mm,
                ISNULL(cmam_amortization_start_dt, maxComponent.cm_effective_dt),
                cmam_amortization_end_dt) as decimal(9,2))/12 as decimal(9,2))
            END
        ) AS AmortTermYears,
        tq_dd_product as Product,
        dh_key_rate as KeyRate,
        dh_pv01 as PV01,
        dh_val_time_stamp as RateTimeStamp,
        re_bnk_le.re_company_name as Company,
        rc_contact_id as UserId,
        stp_name as NickName,
        PR.pj_project_name as project,
        '' as Borrower,
        '' as Lender,
        '' as AdditionalInfo,
        CASE WHEN tpm_pd_permission_id = 85 THEN 'LLH' WHEN tpm_pd_permission_id = 86 THEN 'ALM' ELSE '' END as Permission,
        tr_transaction_id as TransactionId,
        NULL as IndicationId

    FROM cfo_transaction TR
    INNER JOIN com_project_transaction_link TL
    ON TR.tr_transaction_id = TL.pt_tr_transaction_id
    INNER JOIN com_project PR
    ON TL.pt_pj_project_id = PR.pj_project_id 
上面的查询假设每个事务和项目都位于联接项目表和事务表的表上,因此是内部联接,但是如果需要,您可以将它们更改为左联接

SELECT
        com_contact.rc_name_full as CreatedBy,
        capComponent.cm_strike as CapStrike,
        floorComponent.cm_strike as FloorStrike,
        tq_nominal_notional as Notional,
        maxComponent.cm_effective_dt as EffectiveDate,
        maxComponent.cm_maturity_dt as MaturityDate,
        CAST(CAST(DATEDIFF(mm,maxComponent.cm_effective_dt,maxComponent.cm_maturity_dt) as decimal(9,2))/12 as decimal(9,2)) as term,
        (
            CASE WHEN se_amort_term_mnth IS NOT NULL THEN se_amort_term_mnth / 12
            ELSE CAST(CAST(DATEDIFF(mm,
                ISNULL(cmam_amortization_start_dt, maxComponent.cm_effective_dt),
                cmam_amortization_end_dt) as decimal(9,2))/12 as decimal(9,2))
            END
        ) AS AmortTermYears,
        tq_dd_product as Product,
        dh_key_rate as KeyRate,
        dh_pv01 as PV01,
        dh_val_time_stamp as RateTimeStamp,
        re_bnk_le.re_company_name as Company,
        rc_contact_id as UserId,
        stp_name as NickName,
        PR.pj_project_name as project,
        '' as Borrower,
        '' as Lender,
        '' as AdditionalInfo,
        CASE WHEN tpm_pd_permission_id = 85 THEN 'LLH' WHEN tpm_pd_permission_id = 86 THEN 'ALM' ELSE '' END as Permission,
        tr_transaction_id as TransactionId,
        NULL as IndicationId

    FROM cfo_transaction TR
    INNER JOIN com_project_transaction_link TL
    ON TR.tr_transaction_id = TL.pt_tr_transaction_id
    INNER JOIN com_project PR
    ON TL.pt_pj_project_id = PR.pj_project_id