गतिशील रूप से जेनरेट किए गए परिणामों के लिए आपको कुछ गतिशील पीएलएसक्यूएल समाधान की आवश्यकता होती है, इस प्रक्रिया की तरह कुछ दृश्य v_list_loc
:
create or replace procedure p_list_loc is
v_sql varchar2(32000) := '';
begin
for c in (select distinct loc from test order by loc) loop
v_sql := v_sql || '''' ||c.loc|| ''' '||c.loc||',';
end loop;
v_sql := 'create or replace view v_list_loc as '
||'select * from (select item, loc, stock from test) pivot (sum(stock) '
||'for (loc) in ('||rtrim(v_sql, ',')||'))';
execute immediate v_sql;
end p_list_loc;
प्रक्रिया कोड में test
replace को बदलें अपने टेबल नाम के साथ। इस प्रक्रिया को संकलित करें, चलाएं और उत्पन्न दृश्य से परिणाम चुनें v_list_loc
:
SQL> exec p_list_loc;
PL/SQL procedure successfully completed
SQL> select * from v_list_loc;
ITEM KS5 KS6
----- ---------- ----------
0001 10 30
0002 10 20
हर बार जब कॉलम में नए मान loc
ऐसा प्रतीत होता है कि दृश्य से चयन करने से पहले आपको प्रक्रिया निष्पादित करने की आवश्यकता है।