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

Kết nối chuỗi tổng hợp trong Oracle 10g

Oracle 11g có chức năng LISTAGG gọn gàng này, khá nhiều thứ bạn muốn, tuy nhiên vì bạn đang ở trên 10g nên nó không khả dụng cho bạn (trừ khi bạn quyết định nâng cấp).

Nếu vì lý do nào đó mà bạn không muốn (hoặc không thể vì bất kỳ lý do gì) nâng cấp lên 11g, tôi khuyên bạn nên xem xét một số lựa chọn thay thế cho LISTAGG có sẵn cho bạn vào 10g.

Bạn có thể xem một số lựa chọn thay thế được đề xuất tại đây

Đã nhanh chóng điều chỉnh sự thích nghi nhanh chóng của một trong các giải pháp thay thế được đề xuất để phù hợp với tình huống trường hợp của bạn:

WITH Q AS
(
    SELECT 'North' POD, 'Rony' NAME FROM DUAL  UNION ALL
    SELECT 'North',     'James'     FROM DUAL  UNION ALL
    SELECT 'North',     'Aby'       FROM DUAL  UNION ALL
    SELECT 'South',     'Sam'       FROM DUAL  UNION ALL  
    SELECT 'South',     'Willy'     FROM DUAL  UNION ALL
    SELECT 'West',      'Mike'      FROM DUAL
)
SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(e, name||',') ORDER BY name).EXTRACT('//text()'),
            ','
         ) AS name
    FROM q
GROUP BY POD;

Nhưng hãy nhớ rằng đây không phải là giải pháp thực tế vì bạn sẽ phải điều chỉnh nó theo bảng của mình (không phải bảng KÉP giả), v.v ...

Giải pháp của bạn có thể sẽ giống như sau:

SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(E, NAME||',') ORDER BY NAME).EXTRACT('//text()'),
            ','
         ) AS NAME
    FROM tbl1
GROUP BY POD;

Nếu bạn muốn thay đổi dấu phân cách, bạn có thể thay đổi nó từ dấu phẩy trong phần này:

(E, NAME||',')

RTRIM ở đó chỉ để cắt bỏ dấu phẩy ở cuối chuỗi được nối, nếu bạn không bị làm phiền bởi dấu phẩy ở cuối, bạn có thể bỏ qua hàm RTRIM để duy trì khả năng đọc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle tạo bảng dưới dạng giá trị null

  2. PLSQL TRƯỜNG HỢP KHI CÓ ĐIỀU KIỆN

  3. Oracle thiếu kiểu dữ liệu Bit cho các cột bảng

  4. mô tả truy vấn bằng oracle (.Net Connector)

  5. Cấu hình kết nối giữa máy khách và máy chủ Oracle 10g