繁体   English   中英

查询可在Teradata中工作,但不能在Oracle中工作

[英]Query working in Teradata but not in Oracle

如果执行以下代码,则可以获得所需的输出; 但是在Oracle中面临错误:

SELECT NAME
  FROM STUD
 WHERE ID IN (
                 SEL DISTINCT  TAB1.ID  
                FROM (
                              SEL A.ID
                                , B.SALARY
                             FROM Fr   A
                       INNER JOIN PACK B ON A.ID = B.ID
                     ) AS TAB1
          INNER JOIN (
                              SEL A.FRIEND_ID
                                , B.SALARY
                             FROM Fr    A
                       INNER JOIN PACK  B ON A.FRIEND_ID = B.ID
                     ) AS TAB2
                  ON TAB2.SALARY > TAB1.SALARY
      )
    ;

在oracle中面临以下错误:ORA-00907:缺少右括号

您有两个错误: SEL而不是SELECT和带有AS关键字的表别名的使用,Oracle不支持

SELECT NAME
  FROM STUD
 WHERE ID IN (SELECT DISTINCT  TAB1.ID  FROM
(SELECT A.ID , B.SALARY
FROM
Fr   A
INNER JOIN
PACK B
ON
A.ID = B.ID)  TAB1
INNER JOIN
(SELECT A.FRIEND_ID , B.SALARY
FROM
Fr  A
INNER JOIN
PACK  B
ON
A.FRIEND_ID = B.ID
)  TAB2
ON
TAB2.SALARY > TAB1.SALARY
)

除此之外,我认为您不需要在内部查询中使用DISTINCT ,因为您只需在IN子句中使用它即可

暂无
暂无

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

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