Ошибка при попытке создать упорядоченную таблицу SQL - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь создать изменчивую таблицу в SQL с помощью ORDER BY, и я получаю сообщение об ошибке.

CREATE VOLATILE TABLE orderd_dates AS
(SELECT * FROM date_table
ORDER BY id_date)
with data primary index (id_date) on commit preserve rows;

Ошибка: ORDER BY не разрешен в подзапросах.

Если я не могу использовать порядок по, как я могу создать изменяемую таблицу, которая упорядочена?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете добавить TOP 100 PERCENT, чтобы разрешить ORDER BY, но таблица все равно будет неупорядоченной, поскольку таблица внутренне упорядочена по хэшу первичного индекса. И если вы используете таблицу NO PRIMARY INDEX TABLE, и она фактически будет храниться в указанном порядке, оптимизатор не узнает об этом.

Самое близкое, что вы можете получить, это PARTITION BY RANGE_N(id_date BETWEEN DATE '2000-01-01' AND DATE '2050-12-31' EACH INTERVAL '1' DAY:

CREATE VOLATILE TABLE orderd_dates AS
(SELECT * FROM date_table
)
WITH DATA 
PRIMARY INDEX (id_date)
PARTITION BY Range_N(id_date BETWEEN DATE '2000-01-01'
                                 AND DATE '2050-12-31' EACH INTERVAL '1' DAY)
ON COMMIT PRESERVE ROWS;
0 голосов
/ 27 июня 2018

Таблицы SQL по своей природе неупорядочены. Вы должны явно использовать предложение order by при запросе таблицы, а не при ее создании.

...