查询只运行,不执行

Query just runs, doesn't execute

我的查询只是运行但没有执行,出了什么问题。在 oracle 上工作 sql 开发人员,公司服务器

CREATE TABLE voice2020 AS
SELECT
to_char(SDATE , 'YYYYMM') as month,
MSISDN,
SUM(CH_MONEY_SUBS_DED)/100 AS AIRTIME_VOICE,
SUM(CALLDURATION/60) AS MIN_USAGE,
sum(DUR_ONNET_OOB/60) as DUR_ONNET_OOB,
sum(DUR_ONNET_IB/60) as DUR_ONNET_IB,
sum(DUR_ONNET_FREE/60) as DUR_ONNET_FREE,
sum(DUR_OFFNET_OOB/60) as DUR_OFFNET_OOB,
sum(DUR_OFFNET_IB/60) as DUR_OFFNET_IB,
sum(DUR_OFFNET_FREE/60) as DUR_OFFNET_FREE,
SUM(case when sdate < to_date('20190301','YYYYMMDD')
    then CH_MONEY_PAID_DED-nvl(CH_MONEY_SUBS_DED,0)-REV_VOICE_INT-REV_VOICE_ROAM_OUTGOING-REV_VOICE_ROAM_Incoming
    else (CH_MONEY_OOB-REV_VOICE_INT-REV_VOICE_ROAM_OUTGOING-REV_VOICE_ROAM_Incoming) end)/100 AS VOICE_OOB_SPEND
FROM CCN.CCN_VOICE_MSISDN_MM@xdr1
where MSISDN IN ( SELECT MSISDN FROM saayma_a.BASE30112020) --change date
GROUP BY   
MSISDN,
to_char(SDATE , 'YYYYMM')
;

您正在执行 CTAS (CREATE TABLE AS SELECT),此查询的目的是使用通过此查询生成的数据创建 table。

如果您只想执行查询并查看数据,请删除查询的第一行。

-- CREATE TABLE voice2020 AS
SELECT
.....

此外,如果您已经执行过一次,则您实际查询的数据必须出现在 voice2020 table 中。

Select * from voice2020;

看起来您正在尝试将数据从一个 table 复制到另一个 table,如果 table 未创建,您能否创建一次,然后尝试此语句。

insert into  target_table select * from source_table;

这是一个性能问题。显然,驱动您的 CREATE TABLE 语句的查询花费的时间太长 return 结果集。

您正在从远程数据库 (CCN.CCN_VOICE_MSISDN_MM@xdr1) 中的 table 进行查询,然后根据本地 table (saayma_a.BASE30112020) 进行过滤。这意味着您将通过网络复制该远程 table 的 all,然后丢弃与 WHERE 子句不匹配的记录。

您了解您的数据(或者至少您应该了解):这听起来有效吗?如果您实际上要丢弃大部分记录,您应该尝试在远程数据库中过滤 CCN_VOICE_MSIDN_MM。


如果您需要更多建议,您需要提供更多信息。请阅读 ,然后 编辑您的问题 以包含一些详细信息。