Создать кратные от 3 до 15, используя Oracle SQL - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь выполнить этот запрос ниже, используя connect by, но получаю реляционную ошибку, иногда она не завершена, и я не думаю, что есть какой-либо другой способ сделать это.

вот запрос

  select 3*level as X from dual 
     start with 1
     connect by  prior X < 15;

Я хочу получить результат, как показано ниже:

3
6
9
12
..
..
45

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Просто чтобы объяснить, что вы видели, для дальнейшего использования:

select 3*level as X from dual 
start with 1
connect by  prior X < 15;

ORA-00920: invalid relational operator
Error at Line: 3 Column: 1

Ошибка на самом деле жалуется на ваше предложение start with, которое должно иметь условие ;1 является просто буквальным значением и не может использоваться как условие (оно не может быть оценено как «истина» или «ложь»).Если мы исправим это так, что теперь это условие:

select 3*level as X from dual 
start with 1 = 1
connect by  prior X < 15;

ORA-00904: "X": invalid identifier
Error at Line: 3 Column: 18

Теперь проблема в том, что ваше условие connect by относится к X, который не является столбцом в исходных данных;к сожалению, вы не можете ссылаться на псевдонимы, определенные в предложении select.

Обычно вы бы заменили X на фактическое выражение, например 3*level - но в этом случае это все равно не будетработать либо потому, что вы не можете ссылаться на псевдостолбец в выражении prior.

Вместо этого вы можете сделать следующее:

select 3*level as X from dual 
start with 1 = 1
connect by level < 15;

Очевидно, start with 1 = 1 является избыточным и может бытьудален;и, таким образом, у вас есть ответ, предложенный user75ponic, который отлично работает.

0 голосов
/ 23 мая 2018

Попробуйте следующим образом

    SELECT 3 * LEVEL mult
      FROM DUAL
CONNECT BY LEVEL <= 15;

Вывод

╔══════╗
║ mult ║
╠══════╣
║    3 ║
║    6 ║
║    9 ║
║   12 ║
║   15 ║
║   18 ║
║   21 ║
║   24 ║
║   27 ║
║   30 ║
║   33 ║
║   36 ║
║   39 ║
║   42 ║
║   45 ║
╚══════╝

Демонстрация SQL Fiddle

...