Согласно пункту Redshift WITH документации, вы можете использовать WITH предложение с оператором INSERT INTO...SELECT
. Однако при тестировании этого я получаю следующую ошибку. Это невозможно, или у меня неправильный синтаксис?
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP);
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT INTO TestCTEInsert
(SomeTimestamp) SELECT SomeTimestamp from CTE;
ОШИБКА: 42601: синтаксическая ошибка в строке «вставка» или рядом с ней
Интересно, что он поддерживает вставку в новую таблицу, т.е.
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT SomeTimestamp INTO NewTable
SELECT SomeTimestamp from CTE;
Команда выполнена успешно (затронута 1 строка)
EDIT: Просто для подтверждения я получаю ту же ошибку при использовании столбца INTEGER
, а не TIMESTAMP
:
CREATE TABLE TestCTE (SomeInt INTEGER);
WITH CTE AS
(SELECT 1 as SomeInt)
INSERT INTO TestCTEInsert
SELECT SomeInt from CTE;
ОШИБКА: 42601: синтаксическая ошибка в строке «вставка» или рядом с ней
ERROR: 42601: syntax error at or near "insert"
- person fez   schedule 18.01.2016;
ставится в конец оператора, а не где-то в середине. - person a_horse_with_no_name   schedule 18.01.2016