create table agl_spell_gr7 as
select * from(
WITH cte1 AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Realtimeclock) rn
FROM loadsurvey t
),
cte2 AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Realtimeclock) rn
FROM loadsurvey t
WHERE I_R <> 0 and I_Y <> 0 and I_B <> 0
),
cte3 AS (
SELECT t1.*,
t1.rn - t2.rn AS diff
FROM cte1 t1
INNER JOIN cte2 t2
ON t1.Meter_id = t2.Meter_id AND t1.Realtimeclock = t2.Realtimeclock
)
SELECT
Meter_id,
MIN(Realtimeclock) AS start_time,
MAX(Realtimeclock) AS end_time,
COUNT(I_Y) AS I_Y,
COUNT(I_B) AS I_B,
COUNT(I_R) AS I_R, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Meter_id ) AS Spell,
sum(KWH) as KWH,
sum(KWPH) as KWPH
FROM cte3
GROUP BY
Meter_id,
diff);
大家好,
从以上代码创建表时出现以下错误。
请指导我如何进行表创建。 [错误]执行(28:6):ORA-00600:内部错误代码,参数:[rwoirw:检查ret val],[],[],[],[],[],[],[],[ ],[],[],[]
答案 0 :(得分:3)
ORA-00600是Oracle的未处理异常(即错误)的错误号。 ORA-00600错误的性质是,它们通常是极端情况,受到针对特定OS平台上特定数据库版本运行的某些代码构造的影响。因此,它们通常需要修补程序才能对其进行修复。但是,当您似乎使用的是过时的Oracle版本(10g还是11g ??)时,我想您不太可能在具有支持合同和/或有兴趣将数据库保持在修补状态的组织中工作。
在这种情况下,可能没有关系。 Google suggests this internal error有时由CREATE TABLE AS SELECT语句抛出。您对CTAS语句有一定的了解,并具有许多分析功能。因此,只需使用一个独立的CREATE TABLE语句并用一个单独的INSERT语句填充表,便可以解决此问题。
答案 1 :(得分:1)
最近在使用创建表abc作为从xyz中选择a,b,a ....时遇到了相同的错误 并尝试了Google搜索提供的各种解决方案,但没有任何效果。终于碰到了这个链接 https://programmer.ink/think/oracle-11g-uses-rownum-to-perfect-ora-00600-internal-error-code.html
建议在脚本末尾添加一个where子句 “哪里rownum> -1”,它的工作原理。为我工作,以为我会在这里分享。