Đây là một giải pháp sẽ hoạt động cho MySQL. Nó sử dụng một truy vấn con có tương quan trong mệnh đề select để nhóm nối với nhau Col2
các giá trị. Logic là chúng tôi chỉ tổng hợp các giá trị nhỏ hơn hoặc bằng hàng hiện tại, cho một nhóm bản ghi nhất định chia sẻ cùng một Col1
giá trị.
SELECT
Col1,
(SELECT GROUP_CONCAT(t2.Col2 ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Đây là cùng một truy vấn trong Oracle:
SELECT
Col1,
(SELECT LISTAGG(t2.Col2, ',') WITHIN GROUP (ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Lưu ý rằng thay đổi thực sự duy nhất là thay thế LISTAGG
cho GROUP_CONCAT
.