2011-03-02 7 views
0

に参加する:は、いくつかのSQLストアドプロシージャの助けが必要 - だから私は私のPROCのこのセクションを持って

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というIDが付いています。私たちは、と呼ばれる2つの2列使用して、プロジェクトID年代にそれらのidを結ぶcom_project_transaction_linkと呼ばれる別のテーブル、持っている:

pt_tr_transaction_idpt_pj_project_idをした後、我々はpj_project_idpj_project_nameを持ってcom_projectと呼ばれるすべてのプロジェクトを含むテーブルを持っています。

ゴール:プルされているトランザクションとリンクするプロジェクトテーブルからpj_project_nameを返します。

私は本当にこれを行う方法がわかりません。

ありがとうございます!

答えて

0

この試してみてください:上記のクエリは、(これINNER JOIN)すべての取引およびプロジェクトは、プロジェクトや取引のあなたのテーブルを結合するテーブルの上にあることを前提としていますが、ヨーヨー缶

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 

を必要に応じてLEFT JOINに変更してください

0

他のテーブルへの2番目の結合をクエリに追加するだけです。

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 
関連する問題