Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn tab chéo Oracle SQL

Đối với các kết quả được tạo động, bạn cần một số giải pháp PLSQL động, tương tự như quy trình này tạo chế độ xem 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;

Trong mã thủ tục, hãy thay thế test với tên bảng của bạn. Biên dịch quy trình này, chạy và chọn kết quả từ chế độ xem được tạo 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

Mỗi khi các giá trị mới trong cột loc dường như bạn cần thực hiện thủ tục trước khi chọn từ chế độ xem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia bên ngoài Oracle (+) và các giá trị không đổi

  2. Tại sao tôi nhận được java.lang.AbstractMethodError khi cố gắng tải một đốm màu trong db?

  3. gặp lỗi khi chèn nhiều hàng trong sql

  4. Trong một thủ tục PL / SQL, bọc một truy vấn hoặc con trỏ chuột trong bảng HTML

  5. Cách hiển thị dữ liệu bảng rõ ràng hơn trong oracle sqlplus