同时使用DISTINCT,SUBSTR和ORDER BY

时间:2015-10-26 13:17:26

标签: sql oracle

我在BusinessObjects中进行Oracle查询,但我不能同时使用这三个关键字:DISTINCT,SUBSTR和ORDER BY。

可以使用DISTINCT ORDER BY DISTINCT SUBSTR,但不能同时使用这三者。

返回的错误是" ORA-01791:不是SELECTed表达式"。

这有效:

SELECT
DISTINCT SUBSTR(HPD_HELP_DESK.Product_Name, 1, 3)
FROM
HPD_HELP_DESK
WHERE REGEXP_LIKE(HPD_HELP_DESK.Product_Name, '^[A-Z]{2}[A-Z]? -')

这也有效:

{{1}}

你能告诉我写些什么来让它起作用吗? 感谢。

2 个答案:

答案 0 :(得分:2)

SUBSTR添加别名,并在ORDER BY中使用:

SELECT DISTINCT SUBSTR(HPD_HELP_DESK.Product_Name, 1, 3) AS result
FROM HPD_HELP_DESK
WHERE REGEXP_LIKE(HPD_HELP_DESK.Product_Name, '^[A-Z]{2}[A-Z]? -')
ORDER BY result;

或:

SELECT DISTINCT SUBSTR(HPD_HELP_DESK.Product_Name, 1, 3)
FROM HPD_HELP_DESK
WHERE REGEXP_LIKE(HPD_HELP_DESK.Product_Name, '^[A-Z]{2}[A-Z]? -')
ORDER BY SUBSTR(HPD_HELP_DESK.Product_Name, 1, 3);

答案 1 :(得分:0)

您可以使用列号:

SELECT DISTINCT SUBSTR(HPD_HELP_DESK.Product_Name, 1, 3) 
FROM HPD_HELP_DESK
WHERE REGEXP_LIKE(HPD_HELP_DESK.Product_Name, '^[A-Z]{2}[A-Z]? -')
ORDER BY 1