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

Trục động trong sql oracle

Bạn không thể đặt một câu lệnh động trong câu lệnh IN của PIVOT mà không sử dụng PIVOT XML, câu lệnh này xuất ra một số đầu ra ít hơn mong muốn. Tuy nhiên, bạn có thể tạo một chuỗi IN và nhập chuỗi đó vào câu lệnh của mình.

Đầu tiên, đây là bảng mẫu của tôi;

  myNumber    myValue myLetter
---------- ---------- --------
         1          2 A        
         1          4 B        
         2          6 C        
         2          8 A        
         2         10 B        
         3         12 C        
         3         14 A      

Đầu tiên hãy thiết lập chuỗi để sử dụng trong câu lệnh IN của bạn. Ở đây bạn đang đặt chuỗi vào "str_in_statement". Chúng tôi đang sử dụng COLUMN NEW_VALUE và LISTAGG để thiết lập chuỗi.

clear columns
COLUMN temp_in_statement new_value str_in_statement
SELECT DISTINCT 
    LISTAGG('''' || myLetter || ''' AS ' || myLetter,',')
        WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement 
    FROM (SELECT DISTINCT myLetter FROM myTable);

Chuỗi của bạn sẽ giống như sau:

'A' AS A,'B' AS B,'C' AS C

Bây giờ, hãy sử dụng câu lệnh Chuỗi trong truy vấn PIVOT của bạn.

SELECT * FROM 
    (SELECT myNumber, myLetter, myValue FROM myTable)
    PIVOT (Sum(myValue) AS val FOR myLetter IN (&str_in_statement));

Đây là Kết quả:

  MYNUMBER      A_VAL      B_VAL      C_VAL
---------- ---------- ---------- ----------
         1          2          4            
         2          8         10          6 
         3         14                    12 

Tuy nhiên, vẫn có những hạn chế. Bạn chỉ có thể nối một chuỗi có tối đa 4000 byte.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kiểm tra xem con trỏ có trả về bất kỳ bản ghi nào trong oracle hay không?

  2. ORA-01843 không phải là tháng hợp lệ- So sánh Ngày

  3. Cách tìm Lịch sử chờ đợi của phiên Oracle

  4. JDBC Oracle - Tìm nạp giải thích kế hoạch cho truy vấn

  5. Cột nhận dạng Oracle và chèn vào lựa chọn