आप PIVOT
. का उपयोग कर सकते हैं विश्लेषणात्मक कार्य सहित खंड ROW_NUMBER()
:
SELECT "search", "Social"
FROM (
SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY category ORDER BY url) AS rn
FROM t
)
PIVOT
(
MAX(url) FOR category IN ( 'search' AS "search", 'Social' AS "Social" )
)
ORDER BY rn
और अगर SELECT
स्टेटमेंट इस भाग CREATE OR REPLACE VIEW v1 AS
द्वारा तैयार किया गया है , तो आपके पास v1
. नाम के साथ एक नया डेटाबेस दृश्य होगा उस कथन की सामग्री को
SELECT * FROM v1
अपडेट करें: आपके पास अभी भी धुरी को गतिशील बनाने का विकल्प है वर्तमान की तुलना में आगामी विभिन्न श्रेणी मान बनाम। REFCURSOR
. सहित एक फ़ंक्शन (या प्रक्रिया) बनाएं जैसे;
CREATE OR REPLACE FUNCTION Get_Categories_RS RETURN SYS_REFCURSOR IS
v_recordset SYS_REFCURSOR;
v_sql VARCHAR2(32767);
v_str VARCHAR2(32767);
BEGIN
SELECT LISTAGG( ''''||category||''' AS "'||LOWER(category)||'"' , ',' )
WITHIN GROUP ( ORDER BY category )
INTO v_str
FROM (
SELECT DISTINCT category
FROM t
);
v_sql :=
'SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY category ORDER BY url) AS rn
FROM t
)
PIVOT
(
MAX(url) FOR category IN ( '|| v_str ||' )
)
ORDER BY rn';
OPEN v_recordset FOR v_sql;
RETURN v_recordset;
END;
और फिर यह कोड चलाएँ:
VAR rc REFCURSOR
EXEC :rc := Get_Categories_RS;
PRINT rc
एसक्यूएल डेवलपर . से परिणाम सेट देखने के लिए कमांड लाइन।