将多个 Select 语句插入 Table 时出现错误

Seeing Error When Inserting Multiple Select Statements into Table

当我在 table 中插入多个 select 语句时,我看到了 00904:无效标识符错误

有谁知道为什么或如何修改此 INSERT 查询以使其正常工作?

(i) 我已确认这些列有效并且都存在

(ii) 当 运行 单独

时,单独的 select 语句执行没有问题

(iii) select 语句生成 NUMBER 数据类型的单个值

(iv) 报错信息中提到的Column 4 Line 21恰好在F2位置,如下面INSERT语句中显示为--> F2

INSERT INTO
    VCHR_DASHB_SUMMARY_STATS (CurrWkCount, YEARTODATE)
SELECT 
    F1.CurrWkCount, -->F2.YEARTODATE   
FROM
(
    SELECT COUNT(VOUCHER_FILED_DATE) AS COUNT, SYSDATE AS "AS OF" 
    FROM CONTINUED_CLAIMS
    WHERE VOUCHER_FILED_DATE >= trunc ( sysdate, 'iw' )
    AND VOUCHER_FILED_DATE  < trunc ( sysdate, 'iw' ) + 5
) F1
CROSS JOIN
(
    SELECT COUNT(VOUCHER_FILED_DATE)
    FROM CONTINUED_CLAIMS
    WHERE voucher_filed_date >= trunc(sysdate, 'year')
) F2;

命令行错误:4 列:21 错误报告 - SQL 错误:ORA-00904:“F2”。“YEARTODATE”:标识符无效 00904. 00000 - “%s:无效标识符”

F2 是一个内联视图,它不包含 YEARTODATE 列;它唯一的列是 count(voucher_filed_date) 甚至没有别名所以 ...

f1.currwkcount 也是如此 - 那里没有这样的专栏。您使用了别名 count (您不应该这样做;它是 Oracle 函数的名称并且会造成混淆)和 "AS OF" (完全一样:大写,两个词,用双引号括起来 -你不能以任何其他方式使用它)。

考虑这样的事情(请注意,我没有你的表格,所以无法测试)。我假设 count(voucher_filed_date) 代表 yeartodate;如果不是,那是什么?

insert into vchr_dashb_summary_stats (currwkcount, yeartodate)
select f1.currwkcount, f2.yeartodate   
from (select count(voucher_filed_date) as currwkcount, 
             sysdate as as_of
      from continued_claims
      where voucher_filed_date >= trunc ( sysdate, 'iw' )
        and voucher_filed_date  < trunc ( sysdate, 'iw' ) + 5
     ) f1
cross join
    (select count(voucher_filed_date) as yeartodate
     from continued_claims
     where voucher_filed_date >= trunc(sysdate, 'year')
    ) f2;