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

giá trị cột trong một hàng

Nếu bạn đang sử dụng 11.2 thay vì chỉ 11.1, bạn có thể sử dụng LISTAGG hàm tổng hợp

SELECT listagg( interval, ',' ) 
         WITHIN GROUP( ORDER BY interval )
  FROM (SELECT DISTINCT range AS interval
          FROM table_name
         WHERE age = 62)

Nếu bạn đang sử dụng phiên bản Oracle cũ hơn, bạn có thể sử dụng một trong các Các kỹ thuật tổng hợp chuỗi của Oracle trên trang của Tim Hall. Trước ngày 11.2, sở thích cá nhân của tôi là tạo do người dùng xác định chức năng tổng hợp để sau đó bạn có thể

SELECT string_agg( interval )
  FROM (SELECT DISTINCT range AS interval
              FROM table_name
             WHERE age = 62)

Tuy nhiên, nếu bạn không muốn tạo một hàm, bạn có thể sử dụng ROW_NUMBER và phương pháp tiếp cận SYS_CONNECT_BY_PATH mặc dù điều đó có xu hướng khó theo dõi hơn một chút

with x as (
  SELECT DISTINCT range AS interval
          FROM table_name
         WHERE age = 62 )
select ltrim( max( sys_connect_by_path(interval, ','))
                keep (dense_rank last order by curr),
              ',') range
  from (select interval,
               row_number() over (order by interval) as curr,
               row_number() over (order by interval) -1 as prev
          from x)
connect by prev = PRIOR curr
  start with curr = 1



  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 thế nào để mở rộng vị trí thập phân của một số đến mức tối thiểu trong Oracle PLSQL?

  2. Đặt biến môi trường ORACLE_HOME và PATH khác nhau bằng Ansible

  3. Làm cách nào để tổng hợp dữ liệu theo cấu trúc dạng cây trong SQL từ con đến cha?

  4. truy vấn oracle chậm với REGEXP_SUBSTR (AGGREGATOR, '[^;] +', 1, LEVEL)

  5. ORA-00942:bảng hoặc dạng xem không tồn tại với Mẫu Spring JDBC trong Spring Boot