#sql #postgresql #loops
Вопрос:
Я пытаюсь создать представление с переменными (я хочу создавать статистические отчеты), я пробовал это :
Do $
yr_max integer;
yr_min integer;
i integer :=an_min;
BEGIN
SELECT GREATEST end_year FROM schema.table INTO yr_max;
SELECT LEAST start_year FROM schema.table INTO yr_min;
CASE
WHEN "type"=2 THEN 'AAAA'
WHEN "type"=1 THEN 'BBBB'
ELSE 'other'
END AS type_orp,
FOR i IN yr_min..yr_max LOOP -- for each year
ROUND(SUM(case when "start_year ">=i and "end_year "< i 1 then "area" end)) as 'tot_'||to_char(i), --sum of surfaces per year
END LOOP;
END;
$ LANGUAGE plpgsql;
Но я почти уверен, что невозможно поместить цикл в выбранное право ?
Комментарии:
1. Мне не на 100% ясно, что ты хочешь сделать. Вы хотите создать представление (сводную точку?) с динамическим списком столбцов, в зависимости от данных? Если это так, то «динамическая инструкция SQL» сделает свое дело.
2. Да! я хочу иметь сумму площадей, используемых в год и по типу. Я собираюсь проверить это
3. условная агрегация, аналитические функции, рекурсивный CTE… … Я не совсем понимаю, чего ты добиваешься. Примеры данных и ожидаемые результаты улучшат наше понимание того, чего вы пытаетесь достичь
4. @xQbert да, я могу себе представить, но я все еще не понимаю, как опубликовать выписку из таблицы или разрыв строки на этом сайте
5. Чтобы сгенерировать хорошие табличные данные для вопроса , adn затем отформатирует их в виде блока кода. или опубликуйте SQL для создания таблицы или используйте онлайн-базу данных, на которую мы можем ссылаться с заполненными таблицами и данными. (Например, рекстестер)