2013-05-12 5 views
1

У меня есть следующий SQL код:Где я могу вставить код в свой код?

select upper(regexp_substr(street1, '\S+$')) 

, но я не знаю, где я должен поставить отчетливое ключевое слово, чтобы иметь уникальные значения в таблице, потому что я печатает много повторяющихся значений.


Редактировать - от комментариев ниже.

Complete Query (ошибка):

select distinct UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) 
from HELENS_DATA 
order by REGEXP_SUBSTR(STREET1, '\S+$') asc 

Сообщение об ошибке:

ORA-01791: не выбранного выражения 01791. 00000 - "не выбранного выражения" * Причина: * Действие: Ошибка в строке: 3 колонки: 24

Complete Запрос (работы):

select distinct UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) 
from HELENS_DATA 
order by UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) desc; 

УКАЗЫВАЙТЕ, что первоначальный запрос попытался изменить значения запроса на верхний с помощью функции UPPer(), как бы я ошибочно проигнорировал эту функцию в предложении ORDER BY, и это не было ошибкой «DISTINCT».

+0

Пожалуйста, измените свой ответ, чтобы указать, что вы уже пробовали, что не работает, и какие ошибки вы получили именно в этих попытках. –

+0

Пожалуйста, напишите свой ** полный запрос **, который работает. –

+0

Поместите 'UPPER' в ваш' ORDER BY'. –

ответ

0

Интересно, что DISTINCT не работает, если у вас есть функция UPPER. Вы можете попытаться обойти его с помощью подзапроса:

SELECT DISTINCT Ending 
FROM (select upper(regexp_substr(street1, '\S+$')) Ending) A 

подзапрос действительно не должно быть необходимым, хотя, это должно работать также, как и Chue х рекомендуется.

SELECT DISTINCT upper(regexp_substr(street1, '\S+$')) 
+0

cool sub query works, это странно для меня, но спасибо за помощь – dhssa

+0

@DilshatAbduwalli, рад, что я мог бы помочь. Итак, как насчет +1 и маркировки в качестве ответа? –

1

distinct всегда приходит сразу после select:

select distinct upper... 
+0

Я пробовал это, но оракул дал мне ошибку, сказав не SELECTed выражение – dhssa

+0

, если я возьму верхнюю функцию, но мне нужно изменить значения на верхний регистр – dhssa

+1

@DilshatAbduwalli - интересно. Извините, я не знаю, почему 'distinct' будет терпеть неудачу с' upper'. –

0

Вы пробовали:

SELECT DISTINCT верхней (...) AS 'Имя поля'

Если имя поля, которое выполняют это, чтобы это могло работать и позволяло вам использовать DISTINCT.

+0

Что означает «псевдоним поля», связанный с проблемой? –

0

Для Доработка:

Изначально я запускать код в базе данных оракула в качестве следующего кода

Complete Query (ошибка):

select distinct UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) 
from HELENS_DATA 
order by REGEXP_SUBSTR(STREET1, '\S+$') asc; 

И в результате я получили следующее сообщение об ошибке:

ORA-01791: not a SELECTed expression 01791. 00000 - "not a SELECTed expression" 
*Cause: *Action: Error at Line: 3 Column: 24 

Ответы, приведенные выше, помогли мне выяснить ошибку, которую я упустил, и следующий код - это заполненный SQL-запрос, который работает нормально.

Complete Query (работа):

select distinct UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) 
from HELENS_DATA 
order by UPPER(REGEXP_SUBSTR(STREET1, '\S+$')) desc; 

пожалуйста ЗАМЕТЬТЕ, что первоначальный запрос пытался изменить значение запроса на верхний с помощью функции UPPER(), как я когда-либо ошибочно игнорировал функцию в ORDER BY пункта и это не было ошибкой «DISTINCT».

Включение заключается в том, что любой аргумент предложения SELECT имеет другие потенциальные предложения, например. WHERE, ORDER BY ... и т. Д. Также должны иметь один и тот же шаблон или одинаковое значение.

Спасибо всем.

0

Вам не нужно повторять код в предложении ORDER BY. Независимо от псевдонима вы определяете в SELECT списке, могут быть использованы в ORDER BY:

SELECT DISTINCT 
    UPPER(REGEXP_SUBSTR(street1, '\S+$')) AS street1_upper 
FROM 
    HELENS_DATA 
ORDER BY 
    street1_upper DESC; 
Смежные вопросы