查询在Oracle 11g上工作,但在Oracle 8i上失败
我正在Oracle 11g中运行此查询,没有问题:查询在Oracle 11g上工作,但在Oracle 8i上失败,oracle,oracle11g,oracle8i,Oracle,Oracle11g,Oracle8i,我正在Oracle 11g中运行此查询,没有问题: select (case when seqnum = 1 then '1' when seqnum = cnt then '0' end) as value1, (case when seqnum = 1 then t.BEGIN_DT when seqnum = cnt then
select (case
when seqnum = 1 then
'1'
when seqnum = cnt then
'0'
end) as value1,
(case
when seqnum = 1 then
t.BEGIN_DT
when seqnum = cnt then
t.END_DT
end) as TIME1,
t4.UNIT1 || '.SUBBATCH_TRIGGER' TAG
from (select t.*,
row_number() over(partition by t.BATCH_ID, t.plant_unit, t3.ID2 order by t.BEGIN_DT) as seqnum,
count(*) over(partition by t.BATCH_ID, t.plant_unit, t3.ID2) as cnt
from SCH2.tb_pg_unit_stap t
join (select ID1,batch_id from SCH2.VW_BATCH) t2 on t.BATCH_ID = t2.BATCH_ID
join (select ID2,ID1 from SCH1.STEP) t3 on t3.ID1 = t2.ID1) t
join SCH2.TB_W_MACHINE t4 on t4.plant_unit = t.plant_unit
where (seqnum = 1
or seqnum = cnt) AND (t.BEGIN_DT > '01-jan-2013' AND t.BEGIN_DT < '01-feb-2013');
但当我在Oracle8i8.7.1中运行它时,它给出了ORA-00933:SQL命令未正确结束
在Oracle8i中运行sql命令有什么特别的考虑吗
提前感谢自9i起引入AFAK case命令。正常-沿记忆车道行驶时间:
select decode(seqnum,
1, '1',
cnt, '0') as value1,
decode(seqnum,
1, t.BEGIN_DT,
cnt, t.END_DT) as TIME1,
t4.UNIT1 || '.SUBBATCH_TRIGGER' TAG
from (select t.*,
row_number() over (partition by t.BATCH_ID, t.plant_unit, t3.ID2
order by t.BEGIN_DT) as seqnum,
count(*) over (partition by t.BATCH_ID, t.plant_unit, t3.ID2) as cnt
from SCH2.tb_pg_unit_stap t
INNER join (select ID1, batch_id
from SCH2.VW_BATCH) t2
on t.BATCH_ID = t2.BATCH_ID
INNER join (select ID2, ID1
from SCH1.STEP) t3
on t3.ID1 = t2.ID1) t
INNER join SCH2.TB_W_MACHINE t4
on t4.plant_unit = t.plant_unit
where (seqnum = 1 or seqnum = cnt) AND
(t.BEGIN_DT > '01-jan-2013' AND t.BEGIN_DT < '01-feb-2013');
8i版Oracle不支持9iR2中引入的ANSI join SYNTAX。您将使用逗号、连接符号Cross join重写查询,并将连接条件放在查询的where子句中。oracle 8i:end of extended support 2006年12月31日…shiver…我知道这是一个非常旧的版本,但我只开发了一些.NET内容,我需要在那里运行此查询。。。这是客户的数据库,可能是重复的,谢谢您的评论!有人能帮我把它改写成Oracle 8i吗?我很困惑。我很确定问题出在第_行的number和count*over,在没有分析函数的情况下重写这个查询似乎很棘手。@simon:不是。它们在8i中可用-这是8.xoh中不支持的ANSI连接,你说得对!我从来没有做过低于10G的工作,我的问题得到了成功的回答。我将提出另一个问题来替代这个案例。谢谢大家!