Trong Oracle, chúng ta có thể sử dụng LISTAGG()
chức năng chuyển đổi kết quả truy vấn của chúng tôi thành một danh sách được phân tách bằng dấu phẩy.
Vì vậy, thay vì mỗi giá trị được xuất trong một hàng riêng biệt, tất cả các giá trị được xuất trong một hàng duy nhất, được phân tách bằng dấu phẩy (hoặc một số dấu phân tách khác mà chúng tôi chọn).
Ví dụ
Hãy tưởng tượng chúng ta chạy truy vấn sau:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Kết quả:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
Truy vấn đó trả về năm hàng, mỗi hàng có một giá trị khác nhau.
Nếu chúng ta muốn các giá trị đó được xuất trên một hàng, chúng ta có thể làm như sau:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Kết quả:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Tất cả những gì chúng tôi đã làm là chuyển tên cột vào LISTAGG()
chức năng, cũng như dấu phân cách đã chọn của chúng tôi.
Chúng ta có thể sử dụng một dấu phân tách khác hoặc chúng ta có thể bỏ qua hoàn toàn đối số đó để tất cả các mục được nối với nhau.
Hàm cũng chấp nhận DISTINCT
mệnh đề (để loại bỏ các giá trị trùng lặp) và một ORDER BY
mệnh đề (để sắp xếp đầu ra của hàm).
Hàm cũng có thể khá tiện dụng khi nhóm các kết quả truy vấn.
Xem LISTAGG()
Hàm trong Oracle để có thêm ví dụ.