如何在where子句的select查询中使用列别名定义

时间:2018-02-08 10:41:04

标签: sql oracle select

需要使用别名引用,为where子句中的列定义。

SELECT COUNT(S.ID)
     , SUBSTR(D.DEPARTENT_ID, 42,INSTR(D.DEPARTENT_ID, '.',2)-8) AS "**DEPT**"
  FROM STUDENT S, DEPARTMENT D
 WHERE S.OBJ LIKE '%' || **DEPT** || '%'

2 个答案:

答案 0 :(得分:0)

拥有SUBSTR部件的派生表。

切换到现代的,明确的JOIN语法。

添加GROUP BY

SELECT COUNT(S.ID), DEPT
FROM STUDENT S
    JOIN (SELECT SUBSTR(D.DEPARTENT_ID, 42,INSTR(D.DEPARTENT_ID, '.',2)-8) AS DEPT
          FROM DEPARTMENT) D
    ON S.OBJ LIKE '%' || DEPT || '%'

GROUP BY DEPT

答案 1 :(得分:0)

这不起作用,因为SELECT语句将在WHERE子句之后加载。

您的查询的操作顺序为:FROM - >在哪里 - >聚合(如您使用的聚合)。 您还需要将聚合放在where子句中。