Добавить столбец даты во временную таблицу в SQL - PullRequest
2 голосов
/ 16 февраля 2020

Я работаю с временной таблицей в Netezza, которая содержит столбцы id, gender, start_date и end_date. Я пытаюсь добавить в эту таблицу новый столбец, который содержит дату по умолчанию 2019-01-01 для всех строк. Таблица, в которую я хочу добавить этот столбец, является локальной временной таблицей, поэтому ALTER TABLE не работает («Ошибка: операция не разрешена для временной таблицы»). Чтобы обойти это, я создал новую временную таблицу с пустым столбцом с соответствующим именем, но теперь я обнаружил, что не могу использовать UPDATE / SET, чтобы заполнить ее датой («Ошибка: слишком большое значение для столбца»). Каков наилучший способ изменить мою временную таблицу, чтобы включить в нее новый столбец с моей датой? Если возможно, я бы хотел просто напрямую изменить старую временную таблицу, а не создавать новую. Примечание: у меня нет необходимых прав администратора в базе данных, в которой я работаю, чтобы просто создать постоянную таблицу для ALTER.

Код, который успешно создал новую временную таблицу с пустым столбцом:

DROP TABLE new_temp_table IF EXISTS;
GO
SELECT id, gender, start_date, end_date, NULL default_date
INTO TEMP TABLE new_temp_table
FROM old_temp_table;
GO

Код, который не работает для замены значений NULL в новом столбце:

UPDATE new_temp_table
SET default_date = '2019-01-01';
GO

1 Ответ

1 голос
/ 16 февраля 2020

Приведите NULL к нужному типу:

SELECT id, gender, start_date, end_date,
       CAST(NULL as DATE) as default_date
INTO TEMP TABLE new_temp_table
FROM old_temp_table;

Netezza не знает, что это за тип, поэтому он делает предположение. И это предположение вряд ли будет датой (я думаю, что это int).

...