2011-03-02 3 views
0

Так что у меня этот раздел моего прока:Нужна SQL ХП помощи - соединяющая

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 

Линия, которая говорит '' as project, мы должны реально изменить, чтобы вернуть данные в настоящее время.

В таблице, которая находится рядом с FROM, называется cfo_transaction, имеет идентификатор, который называется tr_transaction_id. У нас есть другая таблица, называемая com_project_transaction_link, которая связывает эти идентификаторы с проектом идентификаторов, используя две две колонок под названием:

pt_tr_transaction_id и pt_pj_project_id, и тогда мы имеем таблицу, содержащую все проекты, называемые com_project, что имеет pj_project_id и pj_project_name.

ЦЕЛЬ: вернуть pj_project_name из этой таблицы проектов, где она связывается с транзакциями.

Я действительно не знаю, как это сделать.

Спасибо!

ответ

0

Попробуйте это:

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 

Запрос выше предполагает, что каждая сделка и проект находится на столе, который соединяет ваши таблицы проектов и сделок (таким образом INNER JOIN), но лет может измените их на LEFT JOIN, если вы хотите

0

Вы просто добавляете второе соединение к другой таблице в запрос.

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 
0
SELECT ..., cp.pj_project_name 
    FROM cfo_transaction ct 
     INNER JOIN com_project_transaction_link cptl 
      ON ct.tr_transaction_id = cptl.pt_tr_transaction_id 
     INNER JOIN com_project cp 
      ON cptl.pt_pj_project_id = cp.pj_project_id 
Смежные вопросы