Vấn đề của tôi là transpose lĩnh vực hàng (CLOB) đến cột (VARCHAR) với một CSV và sử dụng bảng transposed để báo cáo. Bởi vì việc chuyển đổi trên lớp báo cáo sẽ làm chậm báo cáo.
Một cách cần thực hiện là sử dụng SQL đệ quy. Bạn có thể tìm thấy nhiều bài viết về điều đó nhưng khó tiêu tốn tài nguyên của nó nếu bạn muốn tham gia tất cả các cột chuyển tiếp đệ quy của bạn.
Tôi đã tạo nhiều bảng tạm thời toàn cầu, nơi tôi đã lưu trữ các cột được chuyển đổi đơn lẻ với một mã định danh khóa. Cuối cùng, tôi đã có 6 bảng tạm thời để tham gia 6 cột nhưng do phân bổ nguồn lực hạn chế, tôi không thể mang tất cả các cột lại với nhau. Tôi đã chọn dưới 3 công thức và sau đó tôi chỉ phải chạy 1 truy vấn cho phép xuất trong 10 giây.
Tôi đã tìm thấy các bài viết khác nhau về cách sử dụng các hàm XML2CLOB và đã tìm thấy 3 cách khác nhau.
REPLACE(VARCHAR(XML2CLOB(XMLAGG(XMLELEMENT(NAME "A",ALIASNAME.ATTRIBUTENAME)))),'', ',') AS TRANSPOSED_OUTPUT
NVL(TRIM(',' FROM REPLACE(REPLACE(REPLACE(CAST(XML2CLOB(XMLAGG(XMLELEMENT(NAME "E", ALIASNAME.ATTRIBUTENAME))) AS VARCHAR(100)),'',' '),'',','), '', 'Nothing')), 'Nothing') as TRANSPOSED_OUTPUT
RTRIM(REPLACE(REPLACE(REPLACE(VARCHAR(XMLSERIALIZE(XMLAGG(XMLELEMENT(NAME "A",ALIASNAME.ATTRIBUTENAME) ORDER BY ALIASNAME.ATTRIBUTENAME) AS CLOB)), '',','),'',''),'','')) AS TRANSPOSED_OUTPUT
Hãy chắc chắn rằng bạn đang đúc "AttributeName" của bạn để varchar trong một subquery và sau đó gọi nó ở đây.
Cảm ơn câu trả lời – gaurav