Возможно ли без использования вставка во внутреннюю таблицу и расширение таблицы по оригиналу. Из-за ограничения привилегий.
Да, это возможно с помощью оператора Level
в SQL. См. Ниже
SELECT
SYSDATE - level
,'XXX' Name
,10 QTY
,level Date_diff
from
dual
connect by
level < 8
order by
1;
РЕДАКТИРОВАТЬ: В соответствии с данными образца, запрос изменяется как
With
tab1 as ( --Implementing Logic
Select
v_date - (level-1) v_date ,
name,
qty,
(data_diff+1) - level col
from tab
connect by level <= data_diff
)
-- Selecting records
select distinct *
from tab1
order by name,col desc ;
Демо:
With Tab(v_date,name,qty,data_diff)
as ( -- Table Data
select to_date('20-Mar-2020','DD-Mon-YYYY'),'A',10, 7 from dual
UNION
select to_date('29-Mar-2020','DD-Mon-YYYY'),'B',12, 3 from dual
UNION ALL
select to_date('17-Mar-2020','DD-Mon-YYYY'),'C',30, 4 from dual
),
tab1 as (
Select
v_date - (level-1) v_date ,
name,
qty,
(data_diff+1) - level col
from tab
connect by level <= data_diff
)
select distinct *
from tab1
order by name,col desc ;
Результат:
