我有一个简单的问题:

SELECT THDR.filename,
       THDR.txn_header_id,
       THDR.txn_header_ext_id,
       THDR.txn_header_dttm,
       THDR.upload_dttm,
       Nvl(Sum(TDTL.txn_vol), 0) TOTAL_VOLUME,
FROM   ci_txn_header THDR,
       ci_txn_detail TDTL,
WHERE  THDR.txn_header_id = TDTL.txn_header_id

现在我面临的问题是,如果在CIIXTXNI报头中存在一个记录,在TDTL中没有相应的记录,则该查询不会返回该记录。
有没有一种方法可以让我把它包括在我的结果中?我不想使用union,因为我认为在查询中使用显式连接可能会有更好的结果。
请帮助我确定解决此问题所需的连接。
AM使用Oracle数据库

最佳答案

使用左连接

SELECT THDR.filename,
       THDR.txn_header_id,
       THDR.txn_header_ext_id,
       THDR.txn_header_dttm,
       THDR.upload_dttm,
       Nvl(Sum(TDTL.txn_vol), 0) TOTAL_VOLUME,
FROM   ci_txn_header THDR
LEFT JOIN ci_txn_detail TDTL
ON THDR.txn_header_id = TDTL.txn_header_id

07-24 09:38