Каков правильный синтаксис для SQL CTE в Oracle? - PullRequest
0 голосов
/ 30 марта 2020

Я все еще довольно новичок в SQL и пытаюсь использовать CTE. Мой запрос не работает должным образом, и я думаю, что это связано с неправильным синтаксисом в этой части запроса: (select "revenue" * 20 from table_name). Что я делаю не так?

WITH cte_test (country, zipcode, revenue) 
as (
select country, zipcode, revenue+1
from table_name)
select *, (select "revenue" * 20 from table_name)
from cte_test;

1 Ответ

4 голосов
/ 30 марта 2020

Вам не нужно перечислять столбцы для CTE (хотя это разрешено). Я бы просто написал это как:

WITH cte_test as (
      select country, zipcode, revenue+1 as revenue
      from table_name
     )
select t.*, (select revenue * 20 from table_name)
from cte_test t;

Примечания:

  • Я думаю, что одной из проблем является * без квалификации таблицы.
  • Ваш подзапрос будет генерировать ошибку во время выполнения, если table_name не имеет ноль или одну строку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...