2016-05-18 2 views
0

Я столкнулся с ошибкой ORA-00933: SQL command not properly ended. То, что я делаю, это запрос к таблице, которую я построил из запроса With. Я расчесывал Stack, пытаясь решить эту проблему с каждым правильно ответившим вопросом, который мог найти, но я все еще сталкиваюсь с ошибкой. Я уверен, что это что-то маленькое и легко исправить. это просто вне меня. Ошибка возникает на линии со вторым оператора выбора:ORA-00933 Ошибка при запросе таблицы «С»

;WITH sums 
    AS (SELECT a.client_number_id      AS Client_Number_ID, 
       Count(Decode(a.sub_type_code, 'A', 1)) AS Applications, 
       Count(Decode(a.sub_type_code, 'S', 1)) AS License, 
       Count(Decode(a.sub_type_code, 'L', 1)) AS Lease 
     FROM mta_spatial.mta_acquired_tenure_svw a 
     WHERE a.tenure_type_description = 'Coal' 
     GROUP BY a.client_number_id) 
SELECT client_number_id, 
     applications, 
     license, 
     lease, 
     applications + license + lease AS 'GrandTotal' 
FROM sums; 
+2

Я не вижу ничего плохого. Так разделите и покоритесь. Попробуйте Подзапрос. удалить, где оставить только один счетчик. Пока вы не получите рабочий запрос, перейдите в другое направление и снова начните добавлять вещи. –

+0

Помогите мне решить эту проблему при правильном оформлении запроса с помощью http://www.dpriver.com/pp/sqlformat.htm –

+0

Спасибо @Juan Карлос Оропеза. Если бы я должен был прокомментировать выбранный select staement, таблица операторов «sums» отлично работает. Только когда я пытаюсь запросить таблицу сумм, я получаю ошибку .... – Mike

ответ

4
applications + license + lease AS 'GrandTotal' 

должен быть

applications + license + lease AS "GrandTotal" 
  • кавычки строка
  • двойные кавычки для имен полей.
+0

Снова, спасибо @Juan Карлос Оропеза. Я тоже попробовал это решение. Я все равно получаю ту же ошибку ... – Mike

+1

lol, я попробовал и работал ... пытался ли вы удалить эту строку? Снова разделите и победите, удалите, пока не найдете виноватое заявление –

+0

Я удалил линию. После этого по какой-то причине я попытался удалить точку с запятой перед оператором with. Спасибо за помощь @Juan Карлос Оропеза! – Mike

2

Включение псевдонима в двойные кавычки сделает его чувствительным к регистру. Если вы хотите сделать регистр псевдонима нечувствительным, напишите его без кавычек. Oracle рассматривает такие случаи как верхний регистр по умолчанию. Поэтому Grandtotal, GRANDTOTAL, grandtotal вернут желаемый результат.

applications + license + lease AS GrandTotal 
+0

Спасибо @I_am_Batman. Я попробовал ваше предложение. Я все еще испытываю ошибку. – Mike

+1

@Mike: Что это; делать в начале? –

+0

Мы поймали, что оба в то же время @I_am_Batman. См. Мой опубликованный ответ, почему у меня было это в начале. Спасибо, что заметили это! – Mike

0

Спасибо всем за их вклад. Я решил это, когда я удалил точку с запятой перед оператором WITH. Я позаимствовал запрос из другого стека нити

To calculate sum() two alias named columns - in sql

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

+0

В SQL Server вы получаете сообщение об ошибке, если cte не находится в начале инструкции. Поэтому большинство людей помещают точку с запятой, чтобы прервать любое предыдущее утверждение. Я не знаю о оракуле. – SQLChao

+0

В Oracle редакторы ведут себя по-разному. Напр. в SQL-разработчике, который является моим предпочтительным редактором; ожидается в конце заявления. Если я начинаю заявление с; без пробела, например: выберите 1 из двойника; это приведет к ошибке неизвестной команды. В жабе, заканчивающийся; также дает ошибку! Мы вынуждены оставлять пустые строки на листе жабы между запросами. Невозможно изменить настройки. –

Смежные вопросы