0

次の投稿の SQL ステートメントに基づいて構築しています:プライマリ ID フィールドを持つ 2 つの異なるテーブルを結合する

1 つのビューに結合しようとしている 2 つのテーブル (md_master & cd_personal_checks) があります。これが私の現在の声明です。

CREATE VIEW ViewCR AS  

SELECT id  + 100000000000000000 AS id, a.external_code + CAST(id AS varchar(15)) as crUniqueId,
       m.check_amount, 'C' as crType, m.postprint_date as activationDate,
       m.postprint_date as creationDate, m.memo_explanation as reasonLine1, m.check_no
  FROM MD_Master m
  Join accounts a on m.account_tag = a.acct_id
 WHERE (m.postprint_tag = 2) OR (m.postprint_tag = 4) OR 
       (m.postprint_tag = 5) OR (m.postprint_tag = 7)

 UNION ALL 

SELECT id + 200000000000000000 as id, 'PERCHK' + CAST(id AS varchar(15)) as crUniqueId,
       check_amount, 'P' as crType, business_date as activationDate,
       business_date as creationDate, identify_description as reasonLine1, check_no
  FROM cd_personal_checks 

しかし、私は別の障害に到達しました。別のテーブルからデータを取得する必要があります (上記の 2 つのテーブルのそれぞれへのリンクがあります)。

上記の両方の select ステートメントで、check_amount である「dispositionAmount」というフィールドを追加する必要があります - SUM(md_cr_pending.current_amount)

md_cr_pendingテーブルにはmaster_id次とリンクするフィールドがありますmd_master.id md_cr_pendingテーブルには次とリンクするcd_personal_check_idフィールドがありますcd_personal_checks.id

助けてくれてありがとう

4

1 に答える 1

1

3 番目のテーブルと forignKeys を投稿しなかったので、私はこれだけを手伝うことができます。

CREATE VIEW ViewCR AS  

    SELECT id  + 100000000000000000 AS id, 
    a.external_code + CAST(id AS varchar(15)) as crUniqueId, 
    m.check_amount, 
    'C' as crType, 
    m.postprint_date as activationDate, 
    m.postprint_date as creationDate, 
    m.memo_explanation as reasonLine1, 
    m.check_no,
    m.check_amount - sh.sumAmount As Difference 
    FROM MD_Master m
    Join accounts a on m.account_tag = a.acct_id
    INNER JOIN (SELECT forignKeyID, 
                SUM(md_cr_pending.current_amount) as sumAmount 
                FROM Table 3
                Group BY forignKeyID) sh ON sh.forignKeyID = m.ID
    WHERE (m.postprint_tag = 2) OR (m.postprint_tag = 4) OR 
          (m.postprint_tag = 5) OR (m.postprint_tag = 7)

    UNION ALL 

    SELECT id + 200000000000000000 as id, 
    'PERCHK' + CAST(id AS varchar(15)) as crUniqueId, 
    check_amount, 
    'P' as crType, 
    business_date as activationDate, 
    business_date as creationDate, 
    identify_description as reasonLine1, 
    check_no,
    check_amount - sh.sumAmount As Difference 
    FROM cd_personal_checks 
    INNER JOIN (SELECT forignKeyID, 
                SUM(md_cr_pending.current_amount) as sumAmount 
                FROM Table 3
                Group BY forignKeyID) sh 
                ON sh.forignKeyID = cd_personal_checks.ID
于 2012-09-06T15:00:32.020 に答える