Мне нужно создать отчет, в котором будут отображаться расходы за последние 12 месяцев. Зависит от того, когда я выполню свой отчет, имя столбцов моего отчета изменится (например, если я выполню отчет в JUL, он должен получить двенадцать столбцов с затратами в июне, мае, апреле, марте. столбцы последние 12 месяцев).
Следующий код PL / SQL создает представление со столбцами динамического имени в зависимости от sysdate.
DECLARE
vSQL VARCHAR2(4000);
BEGIN
vSQL := 'CREATE OR REPLACE VIEW IFSAPP.RLDateTest AS SELECT
ip.part_no,
IFSAPP.RD_PURCH_DEMAND_QTY_ISSUE_API.Get_Avr_Usage_Per_Month(ip.contract,ip.part_no ,to_char(sysdate, ''MM'')-1) ' || **SUBSTR(ADD_MONTHS(SYSDATE, -1),4,3)** ||
', IFSAPP.RD_PURCH_DEMAND_QTY_ISSUE_API.Get_Avr_Usage_Per_Month(ip.contract,ip.part_no ,to_char(sysdate, ''MM'')-2) ' || **substr(ADD_MONTHS(SYSDATE, -2),4,3)** || ' FROM ifsapp.inventory_part ip WHERE ip.contract = ''S03'' ';
EXECUTE IMMEDIATE vSQL;
END;
(|| SUBSTR (ADD_MONTHS (SYSDATE, -1), 4,3) || - псевдоним каждого столбца)
Смысл в том, что, как только я выполню свой отчет, он должен создать представление и показать все его строки. Для этого я подумал об использовании конвейера (для создания таблицы типов, состоящей из результата моего представления, и это позволило бы мне сделать SELECT * FROM TABLE (getView ())) в моем отчете.
Моя проблема заключается в том, что, поскольку имена столбцов моего представления не всегда одинаковы, я не могу создать свою таблицу типов с использованием конвейера.
Любая идея, как можно сделать это или любое другое решение, которое позволило бы мне использовать мой взгляд в избранном зачете?
Большое спасибо.