Я хотел бы создать отчет на основе нескольких переменных, один из которых - месяцы в году. Я хотел бы создать временную таблицу, содержащую только нужные периоды. Вот что я придумал:Postgres: Динамическое создание таблицы временных таблиц
The части У меня возникли проблемы с помещены между < < и >>
DO $$
DECLARE myPeriodFrom INTEGER := 7;
DECLARE myPeriodTo INTEGER := 9;
DECLARE myColumn VARCHAR(255) := 'Period';
BEGIN
DROP TABLE IF EXISTS tmpTable;
CREATE TABLE tmp_table (tmpId INT, tmpDesc varchar(255));
FOR i IN myPeriodFrom..myPeriodTo LOOP
-- Create dynamic column name and fill with data
<< code here >> -- myColumn := (myColumn || CAST(i AS VARCHAR));
ALTER TABLE tmpTable ADD COLUMN <<myColumn>> INT;
INSERT INTO tmpTable (myId, myColumn)
SELECT "Id", "YearAdded" FROM "Item" WHERE "Item"."MonthAdded" = i;
END LOOP;
END $$;
SELECT * FROM tmpTable
Почему вы используете временную таблицу, когда 'generate_series()' вероятно делает то, что вы хотите? –
Не совсем, 'generate_series()' не совсем делает трюк. Все еще нужны столбцы. Когда это работает, другие вычисления должны выполняться в 'SELECT'. Спасибо хоть. – Remco