我正在尝试对来自以下三个表的数据进行分组以创建新表。 account_no
和bmf
中的acct_map
字段实际上是从cmf
中提取的。
字段:
bmf: account_no, trans_date
cmf: account_no, balance_due
acct_map: account_no, external_id
我在新表中想要的字段是:
external_id, account_no, balance_due
当我使用查询1而没有external_id
列时,它可以正常工作并正确填充数据。但是当我尝试查询2时,它会创建一个空白表。为什么会这样?
查询1:
create table paid as
select bmf.account_no, sum(cmf.balance_due) postpaid_balance
from bmf, cmf
where to_char(bmf.trans_date, 'YYYY MM DD') = '1996 08 14' and
bmf.account_no = cmf.account_no
group by bmf.account_no
查询2:
create table paid as
select bmf.account_no, sum(cmf.balance_due) postpaid_balance, acct_map.external_id
from bmf, cmf, acct_map
where to_char(bmf.trans_date, 'YYYY MM DD') = '1996 08 14' and
bmf.account_no = cmf.account_no and
acct_map.account_no = bmf.account_no
group by bmf.account_no, acct_map.external_id
答案 0 :(得分:1)
您是否尝试过首先运行您的选择查询?我猜测表acct_map中没有account_no与bmf或cmf中的account_no匹配。请检查您的查询是否正常,因此看起来像数据问题。
答案 1 :(得分:0)
这是inner join
,因此我猜测查询1中没有与account_no
共享acct_map
的记录。
您可以使用以下查询快速测试:
select count(*)
from
acct_map
where
account_no in (select bmf.account_no
from bmf, cmf
where to_char(bmf.trans_date, 'YYYY MM DD') = '1996 08 14' and
bmf.account_no = cmf.account_no)
答案 2 :(得分:0)
Eric是对的,但是让我补充一点......这不应该是一个视图而不是移动数据吗?