繁体   English   中英

尝试在Oracle 8i中运行

[英]Trying to run this in Oracle 8i

我正在尝试在Oracle 8i中运行此查询,但是它不起作用!

SELECT DECODE(seqnum, 1, t.ID1,cnt,'0') PI_VALUE1,
  DECODE(seqnum, 1, t.STARTTIME,cnt,t.ENDTIME) timestamp,
  '090.'
  || t2.APP
  || '.BATCH' tagname
FROM
  (SELECT t.*,
    row_number() over(partition BY t.ID1, t.PLANT_UNIT order by t.STARTTIME) AS seqnum,
    COUNT(*) over(partition BY t.ID1, t.PLANT_UNIT) cnt
  FROM tb_steps t
  ) t
INNER JOIN tb_equipments t2
ON t2.plant_unit = t.plant_unit
WHERE (seqnum    = 1
OR SEQNUM        = CNT)
AND (T.STARTTIME  > '15-jul-2013'
AND t.ENDTIME    < '15-aug-2013') ;

我已经进行了很多更改(例如case when decode case when更改case when ),但是仍然不行...

有人可以帮我编写Oracle 8i支持的查询吗?

PS .:我知道Oracle不支持该版本的AGES,但是我仅查询.NET应用程序的数据,因此无法升级/接触数据库。

版本为8.1.7,特定错误为:

ORA-00933: SQL command not properly ended.

非常感谢,

直到Oracle Database 9iR1(9.0.1)才引入ANSI连接。 8.1.7不支持它们。

尝试重新编写没有ANSI样式联接的查询。

这样的事情可能会起作用:

SELECT DECODE(seqnum, 1, t.ID1,cnt,'0') PI_VALUE1,
  DECODE(seqnum, 1, t.STARTTIME,cnt,t.ENDTIME) timestamp,
  '090.'
  || t2.APP
  || '.BATCH' tagname
FROM
  (SELECT t.*,
    row_number() over(partition BY t.ID1, t.PLANT_UNIT order by t.STARTTIME) AS seqnum,
    COUNT(*) over(partition BY t.ID1, t.PLANT_UNIT) cnt
  FROM tb_steps t
  ) t, tb_equipments t2
WHERE t2.plant_unit = t.plant_unit
  AND   (t.seqnum    = 1
      or t.seqnum        = t.cnt)
AND (T.STARTTIME  > '15-jul-2013'
AND t.ENDTIME    < '15-aug-2013') ;

完全未经测试...

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM