查询只运行,不执行
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。
如果您需要更多建议,您需要提供更多信息。请阅读 ,然后 编辑您的问题 以包含一些详细信息。
我的查询只是运行但没有执行,出了什么问题。在 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。
如果您需要更多建议,您需要提供更多信息。请阅读