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

Hiển thị các giá trị LISTAGG trong một ô dựa trên giá trị của một cột khác

Bản cập nhật của bạn tương đương với bản cập nhật này.

UPDATE schedules s 
SET    days = (SELECT LISTAGG(day, ', ') 
                        within group ( ORDER BY day_order ) 
               FROM   days d 
               WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
                      AND d.schedule = s.schedule 
               GROUP  BY d.schedule ) ;

Nhưng, tôi không khuyên bạn nên đây. Việc lưu trữ các bản ghi dưới dạng các giá trị được phân tách bằng dấu phẩy nhất định sẽ gây ra sự cố cho bạn trong tương lai. Chỉ sử dụng nó để hiển thị kết quả bằng cách sử dụng truy vấn như bên dưới. Điều này giả định rằng trong bảng ngày của bạn, có các hàng duy nhất cho mỗi ngày. Nếu có các hàng trùng lặp, hãy join nó cho kết quả khác biệt được thiết lập từ nhiều ngày.

SELECT d.id, 
       d.schedule, 
       LISTAGG(s.day, ', ') 
         within GROUP ( ORDER BY d.day_order ) 
FROM   days d 
       join schedules s 
         ON ( d.schedule = s.schedule ) 
WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
GROUP  BY d.id, 
          d.schedule 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể truy cập máy chủ Oracle 12c từ máy tính từ xa bằng nhà cung cấp .Net

  2. Lỗi SQL:ORA-00942 bảng hoặc dạng xem không tồn tại

  3. Không thể chuyển giá trị chuỗi 1,2 làm đầu vào cho một truy vấn tiên tri

  4. Cách lấy đối tượng Connection hiện tại trong Spring JDBC

  5. Nếu chúng ta có bộ ký tự US7ASCII tại sao nó cho phép chúng ta lưu trữ các ký tự không phải ascii?