Bạn có thể sử dụng PIVOT
mệnh đề bao gồm hàm phân tích 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
và nếu SELECT
câu lệnh được thêm vào trước bởi phần này CREATE OR REPLACE VIEW v1 AS
, sau đó bạn sẽ có một chế độ xem cơ sở dữ liệu mới với tên v1
trả lại nội dung của tuyên bố đó bằng
SELECT * FROM v1
Cập nhật: Bạn vẫn có một tùy chọn để tạo trục xoay động so với các giá trị danh mục khác sắp tới so với các giá trị hiện tại. Tạo một hàm (hoặc thủ tục) bao gồm REFCURSOR
chẳng hạn như;
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;
và sau đó chạy mã này:
VAR rc REFCURSOR
EXEC :rc := Get_Categories_RS;
PRINT rc
từ Nhà phát triển SQL Dòng lệnh của để xem tập hợp kết quả.