Я выполняю запросы Oracle в BusinessObjects и не могу использовать эти три ключевых слова одновременно: DISTINCT, SUBSTR и ORDER BY.

Можно использовать DISTINCT и ORDER BY или DISTINCT и SUBSTR, но не все три вместе.

Возвращается ошибка «ORA-01791: не ВЫБРАННОЕ выражение».

Это работает :

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

Это тоже работает:

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
v01dv01d 26 Окт 2015 в 16:17

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);
2
Lukasz Szozda 26 Окт 2015 в 13:19

Вы можете использовать номер столбца:

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
0
Wernfried Domscheit 26 Окт 2015 в 15:51